#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 и имени учетной записи хранилища в этом блоке кода значениями, которые вы собрали при выполнении предварительных условий. Замените значение заполнителя имени контейнера именем контейнера.
Пожалуйста, рассмотрите следующие моменты:
- Убедитесь, что имена ваших контейнеров и учетных записей хранения указаны правильно.
- Все необходимые условия, упомянутые на странице руководства, должны быть выполнены. У пользователя есть все необходимые разрешения.