【问题标题】:Cannot list Azure Storage Gen 2 files with Databricks无法使用 Databricks 列出 Azure Storage Gen 2 文件
【发布时间】:2021-03-04 04:03:12
【问题描述】:

我想知道我的 databricks 代码是否寻址正确的位置,以及“贡献者”权限是否足以访问存储。

  1. 我有 Azure Storage Gen 2 和名为 staging 的容器。 (Azure 门户中的 URL 是 https://datalaketest123.blob.core.windows.net/staging
  2. 我已使用 Azure Databricks 安装 Azure Storage Gen 2。
  3. 我已配置直通,并假设我可以通过我的 AD 用户访问存储。 (贡献者权利)
  4. 我有变量:source = 'abfss://' + in_fileSystemName + '@' + storageAccountName + '.dfs.core.windows.net/'
  5. 我现在尝试使用命令列出文件系统:dbutils.fs.ls(source)

我得到错误:

ET https://datalaketest123.dfs.core.windows.net/staging? 
resource=filesystem&maxResults=500&timeout=90&recursive=false
---------------------------------------------------------------------------
ExecutionError                            Traceback (most recent call last)
<command-1012822525241408> in <module>
 27 # COMMAND ----------
 28 source = 'abfss://' + in_fileSystemName + '@' + storageAccountName + '.dfs.core.windows.net/'
---> 29 dbutils.fs.ls(source)
 30 
 31 # COMMAND ----------

/local_disk0/tmp/1235891082005-0/dbutils.py in f_with_exception_handling(*args, **kwargs)
    312                     exc.__context__ = None
    313                     exc.__cause__ = None
--> 314                     raise exc
    315             return f_with_exception_handling
    316 

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

【问题讨论】:

    标签: databricks azure-databricks


    【解决方案1】:

    official Databricks docsContributor 是不够的 - 它应该是 Storage Blob Data XXX(其中 XXX 是 OwnerContributorReader、...-see docs

    【讨论】:

      【解决方案2】:

      执行将应用程序分配给角色中的步骤时,请确保您的用户帐户具有分配给它的Storage Blob Data Contributor角色。

      Repro:我已向服务主体提供所有者权限并尝试运行“dbutils.fs.ls("mnt/azure/")”,返回与上述相同的错误消息。

      解决方案:现在将Storage Blob Data Contributor角色分配给服务主体。

      最后,在将存储 Blob 数据参与者角色分配给服务主体后,能够获得没有任何错误消息的输出。

      参考:Tutorial: Azure Data Lake Storage Gen2, Azure Databricks & Spark”。

      【讨论】:

        猜你喜欢
        • 2021-03-01
        • 2019-09-23
        • 2021-10-18
        • 2019-06-23
        • 1970-01-01
        • 2020-11-22
        • 1970-01-01
        • 2020-09-27
        • 1970-01-01
        相关资源
        最近更新 更多