Azure Блоки данных: невозможно подключиться к Azure Data Lake Storage Gen2 - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть учетная запись хранения kagsa1 с контейнером cont1 внутри, и мне нужно, чтобы она была доступна (смонтирована) через блоки данных

Если я использую ключ учетной записи хранения в KeyVault, он будет работать правильно:

configs = {
    "fs.azure.account.key.kagsa1.blob.core.windows.net":dbutils.secrets.get(scope = "kv-db1", key = "storage-account-access-key")
}

dbutils.fs.mount(
  source = "wasbs://cont1@kagsa1.blob.core.windows.net",
  mount_point = "/mnt/cont1",
  extra_configs = configs)

dbutils.fs.ls("/mnt/cont1")

.. но если я пытаюсь подключиться, используя Azure учетные данные Active Directory:

configs = {
"fs.azure.account.auth.type": "CustomAccessToken",
"fs.azure.account.custom.token.provider.class": spark.conf.get("spark.databricks.passthrough.adls.gen2.tokenProviderClassName")
}

dbutils.fs.ls("abfss://cont1@kagsa1.dfs.core.windows.net/")

.. не удается:

ExecutionError: An error occurred while calling z:com.databricks.backend.daemon.dbutils.FSUtils.ls.
: GET https://kagsa1.dfs.core.windows.net/cont1?resource=filesystem&maxResults=5000&timeout=90&recursive=false
StatusCode=403
StatusDescription=This request is not authorized to perform this operation using this permission.
ErrorCode=AuthorizationPermissionMismatch
ErrorMessage=This request is not authorized to perform this operation using this permission.

Уровень рабочего пространства базы данных Premium,
Кластер имеет Azure Включен параметр сквозного доступа к хранилищу озера данных,
Учетная запись хранения имеет включенный параметр иерархического пространства имен,
Файловая система инициализирована с помощью

spark.conf.set("fs.azure.createRemoteFileSystemDuringInitialization", "true")
dbutils.fs.ls("abfss://cont1@kagsa1.dfs.core.windows.net/")
spark.conf.set("fs.azure.createRemoteFileSystemDuringInitialization", "false")

, и у меня есть полный доступ к контейнеру в учетной записи хранения: enter image description here

Что я делаю не так?

1 Ответ

1 голос
/ 09 апреля 2020

Примечание: При выполнении действий, описанных в разделе Присвоить приложение роли, обязательно назначьте роль Хранитель данных BLOB-объекта хранилища субъекту службы.

В рамках repro я предоставил owner разрешение субъекту службы и попытался запустить « dbutils.fs.ls (" mnt / azure / ") », возвращенный таким же сообщение об ошибке, как указано выше.

enter image description here

Теперь назначена роль Автор данных хранилища BLOB-объектов для участника службы.

enter image description here

Наконец, можно получить выходные данные без каких-либо сообщений об ошибках после назначения роли ответственного за хранение данных BLOB-объектов хранилища для участника службы.

enter image description here

Подробнее см. « Учебное пособие: Azure Хранилище озера данных Gen2, Azure Databricks & Spark ».

Ссылка : Azure Блоки данных - ADLS Gen2 выбрасывает сообщение об ошибке 403 .

...