Подключение Databrick к текстовым файлам ADLS Gen2

#databricks #azure-databricks #azure-data-lake #azure-data-lake-gen2 #databricks-connect

Вопрос:

Я использую базы данных для доступа к своему контейнеру ADLS Gen2.

 dbutils.fs.mount(
  source = "wasbs://<container-name>@<storage-account-name>.blob.core.windows.net",
  mount_point = "/mnt/<mount-name>",
  extra_configs = {"<conf-key>":dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")})
 

Я использую следующий код и, конечно, меняю то, что мне нужно изменить.

Когда я запускаю скрипт, я получаю следующую ошибку

 df = spark.read.text("/mnt/<mount-name>/...")
 
 shaded.databricks.org.apache.hadoop.fs.azure.AzureException: shaded.databricks.org.apache.hadoop.fs.azure.AzureException: Container <container name> in account <storage account name>.blob.core.windows.net not found, and we canamp;#39;t create it using anoynomous credentials, and no credentials found for them in the configuration.
 

Я зарегистрировал базы данных в своих регистрациях приложений и добавил имя в свою роль ADLS в качестве поставщика данных больших двоичных объектов хранилища.

Я не уверен, почему мои учетные данные не позволяют мне извлекать текстовые файлы, которые находятся в моей учетной записи ADLS.

Любая помощь будет признательна!

Комментарии:

1. у вас действительно есть контейнер с данным именем? Ошибка явно указывает, что контейнер не существует

Ответ №1:

Я попытался воспроизвести проблему, и она отлично работает для меня. Я следовал этому уроку.

Пожалуйста, найдите фрагмент записной книжки databrick ниже:

введите описание изображения здесь

Вы можете рассмотреть тот же пример кода. Пожалуйста, найдите ниже:

 configs = {"fs.azure.account.auth.type": "OAuth",
       "fs.azure.account.oauth.provider.type": "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider",
       "fs.azure.account.oauth2.client.id": "<appId>",
       "fs.azure.account.oauth2.client.secret": "<clientSecret>",
       "fs.azure.account.oauth2.client.endpoint": "https://login.microsoftonline.com/<tenant>/oauth2/token",
       "fs.azure.createRemoteFileSystemDuringInitialization": "true"}

dbutils.fs.mount(
source = "abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/folder1",
mount_point = "/mnt/flightdata",
extra_configs = configs)
 

В этом блоке кода замените значения-заполнители AppID, clientSecret, tenant и имени учетной записи хранилища в этом блоке кода значениями, которые вы собрали при выполнении предварительных условий. Замените значение заполнителя имени контейнера именем контейнера.

Пожалуйста, рассмотрите следующие моменты:

  1. Убедитесь, что имена ваших контейнеров и учетных записей хранения указаны правильно.
  2. Все необходимые условия, упомянутые на странице руководства, должны быть выполнены. У пользователя есть все необходимые разрешения.