无法使用 Azure Databricks 访问已安装的 Azure Data Lake 存储

DIM*_*CKA 2 azure access-rights azure-data-lake azure-databricks

我正在使用 Azure Databricks。使用 Microsoft Learn 网站上指定的文档,我成功地将 BLOB 存储 (ADLS Gen2) 安装到我的 Databricks。

但是,当我尝试列出已安装存储的内容时,出现以下错误:

ExecutionError: An error occurred while calling z:com.databricks.backend.daemon.dbutils.FSUtils.ls.
: GET https://xxxxxxxxxxxxx.dfs.core.windows.net/xxxxxxx?resource=filesystem&maxResults=5000&timeout=90&recursive=false
StatusCode=403
StatusDescription=This request is not authorized to perform this operation using this permission.
ErrorCode=AuthorizationPermissionMismatch
Run Code Online (Sandbox Code Playgroud)

我已经检查了权限,并且我的 ServicePrincipal 已被分配角色“存储 BLOB 数据贡献者”,该角色允许对我的存储容器进行读/写访问。

有人知道我缺少哪一部分才能使其正常工作吗?非常感谢您的帮助。

DIM*_*CKA 6

刚刚找到了解决我自己问题的方法。

根本原因是 Azure 存储容器本身没有设置权限(尽管在 Azure 门户中,一切看起来都正常)。

我为解决此问题所做的操作:在本地计算机上下载并安装 Azure 存储资源管理器

  1. 使用以下 URL 在本地计算机上下载并安装 Azure 存储资源管理器:https://azure.microsoft.com/en-us/features/storage-explorer/
  2. 打开 Azure 门户,然后启动 Azure Cloud Shell。
  3. 使用以下命令检索应用程序 ID(服务主体)的对象 ID。不幸的是,在撰写本文时,您无法直接从门户检索此信息。命令:az ad sp show --id应用程序 ID
  4. 从结果集中复制显示的对象 ID。
  5. 右键单击 Azure 存储资源管理器中的存储容器,选择“管理访问...”
  6. 粘贴您的对象 ID,并分配适当的权限。
  7. 保存并重试 Databricks 笔记本中的代码。

这对我来说很有效。