无法使用 Azure Databricks 访问已安装的 Azure Data Lake 存储
Unable to access a mounted Azure Data Lake storage using 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
我检查了权限,我的 ServicePrincipal 已被分配角色 'STORAGE BLOB DATA CONTRIBUTOR',允许 R/W 访问我的存储容器。
任何人都知道我缺少哪一部分才能使它正常工作?
非常感谢您的帮助。
刚刚找到解决我自己问题的方法。
根本原因是 Azure 存储容器本身没有设置权限(尽管在 Azure 门户中,一切看起来都正常)。
我做了什么来解决这个问题:
在本地计算机上下载并安装 Azure 存储资源管理器
- 使用以下 url 在本地计算机上下载并安装 Azure 存储资源管理器:https://azure.microsoft.com/en-us/features/storage-explorer/
- 打开 Azure 门户,启动 Azure 云 Shell。
- 使用以下命令检索您的应用程序 ID(服务主体)的对象 ID。不幸的是,在撰写本文时,您无法直接从门户检索它。命令:az ad sp show --id 应用程序 ID
- 从结果集中复制显示的对象 ID。
- 在 Azure 存储资源管理器中右键单击您的存储容器,选择 'Manage Access...'
- 粘贴您的对象 ID,并分配适当的权限。
- 保存并重试来自 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
我检查了权限,我的 ServicePrincipal 已被分配角色 'STORAGE BLOB DATA CONTRIBUTOR',允许 R/W 访问我的存储容器。
任何人都知道我缺少哪一部分才能使它正常工作? 非常感谢您的帮助。
刚刚找到解决我自己问题的方法。
根本原因是 Azure 存储容器本身没有设置权限(尽管在 Azure 门户中,一切看起来都正常)。
我做了什么来解决这个问题: 在本地计算机上下载并安装 Azure 存储资源管理器
- 使用以下 url 在本地计算机上下载并安装 Azure 存储资源管理器:https://azure.microsoft.com/en-us/features/storage-explorer/
- 打开 Azure 门户,启动 Azure 云 Shell。
- 使用以下命令检索您的应用程序 ID(服务主体)的对象 ID。不幸的是,在撰写本文时,您无法直接从门户检索它。命令:az ad sp show --id 应用程序 ID
- 从结果集中复制显示的对象 ID。
- 在 Azure 存储资源管理器中右键单击您的存储容器,选择 'Manage Access...'
- 粘贴您的对象 ID,并分配适当的权限。
- 保存并重试来自 Databricks 笔记本的代码。
这对我有用。