Ошибка атрибута при создании области для доступа к Azure Datalake Gen2 из Databricks

Я пытался настроить, используя прицелы, и у меня возникли некоторые проблемы. Любая помощь будет оценена.

Я выполнил следующие команды в Databricks CLI

databricks secrets create-scope --scope dnb-dlg2-dbrcks-scp-stg
databricks secrets put --scope dnb-dlg2-dbrcks-scp-stg --key SPID --string-value "XXXXXXXXXXXXXXXXXX"
databricks secrets put --scope dnb-dlg2-dbrcks-scp-stg --key SPKey --string-value "XXXXXXXXXXXXXXX”
databricks secrets put --scope dnb-dlg2-dbrcks-scp-stg --key DirectoryID --string-value "XXXXXXXXXX"

Успешно создана область. Затем я попытался запустить в своем блокноте следующее

#Gather Relevant Keys from our scope

ServicePrincipalId=dbutils.secret.get(scope="dnb-dlg2-dbrcks-scp-stg",key="SPID")
ServicePrincipalKey=dbutils.secret.get(scope="dnb-dlg2-dbrcks-scp-stg",key="SPKey")
DirectoryID=dbutils.secret.get(scope="dnb-dlg2-dbrcks-scp-stg",key="DirectoryID")

#Combine DirectoryID into full string
Directory="https://login.microsoftonline.com/{}/oauth2/token".format(DirectoryID)

#Create configurations for our connections
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" : ServicePrincipalId,
           "fs.azure.account.oauth2.client.secret":  ServicePrincipalKey,
           "fs.azure.account.oauth2.client.endpoint": Directory}
# "fs.azure.account.oauth2.client.secret" -> dbutils.secrets.get("dnb-dbrk-scrt-scp-stg", key = "dnb-data-bricks-kv-stg"),

# Mount the Data Lake onto DBFS at the /mnt/ location

dbutils.fs.mount(
  source = "abfss://datastore@dbstgstoraccgen2.dfs.core.windows.net/",
  mount_point = "/mnt/datastore5",
  extra_configs = configs)

На этом этапе я получаю сообщение об ошибке. См. Изображение ниже.

СВЕДЕНИЯ ОБ ОШИБКАХ

    AttributeError: 
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<command-4345234368633882> in <module>
----> 1 dbutils.secret.get(scope="dnb-dlg2-dbrcks-scp-stg",key="SPID")

/local_disk0/tmp/1575916741583-0/dbutils.py in __getattr__(self, item)
    482             return self.credentials
    483 
--> 484         raise AttributeError
    485 
    486     def __repr__(self):

AttributeError: 

1 ответ

Решение

Небольшая опечатка в вашем коде: " секрет " должен быть " секретами ".

Ошибка:

ServicePrincipalId=dbutils.secret.get(scope="dnb-dlg2-dbrcks-scp-stg",key="SPID")
ServicePrincipalKey=dbutils.secret.get(scope="dnb-dlg2-dbrcks-scp-stg",key="SPKey")
DirectoryID=dbutils.secret.get(scope="dnb-dlg2-dbrcks-scp-stg",key="DirectoryID")

Заменить secret.get на " secrets.get "

ServicePrincipalId=dbutils.secrets.get(scope="dnb-dlg2-dbrcks-scp-stg",key="SPID")
ServicePrincipalKey=dbutils.secrets.get(scope="dnb-dlg2-dbrcks-scp-stg",key="SPKey")
DirectoryID=dbutils.secrets.get(scope="dnb-dlg2-dbrcks-scp-stg",key="DirectoryID")

Надеюсь это поможет. Сообщите нам, если у вас возникнут дополнительные вопросы.


Нажмите "Отметить как ответ" и проголосуйте за сообщение, которое поможет вам, это может быть полезно для других членов сообщества.

Другие вопросы по тегам