【问题标题】:Attribute error while creating scope to access Azure Datalake Gen2 from Databricks创建范围以从 Databricks 访问 Azure Datalake Gen2 时出现属性错误
【发布时间】:2019-12-10 15:33:00
【问题描述】:

我尝试使用示波器进行设置,但遇到了一些问题。任何帮助将不胜感激。

我在 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: 

【问题讨论】:

  • 您好 Kranny,如果我的回答对您有帮助,您可以接受它作为答案(单击答案旁边的复选标记将其从灰色切换为已填充。)。这对其他社区成员可能是有益的。谢谢。

标签: python azure databricks azure-data-lake-gen2 databricks-connect


【解决方案1】:

代码中的小错字:“secret”应该是“secrets”。

错误:

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")

希望这会有所帮助。如果您有任何进一步的疑问,请告诉我们。


请点击“标记为答案”并在对您有帮助的帖子上点赞,这可能对其他社区成员有益。

【讨论】:

  • 嗨@kranny,刚刚签到看看上面的答案是否有帮助。如果这回答了您的问题,请单击“标记为答案”并投票赞成。而且,如果您有任何进一步的疑问,请告诉我们。
猜你喜欢
  • 2020-05-08
  • 2020-08-09
  • 2020-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-28
相关资源
最近更新 更多