Mau*_*lla 5 databricks databricks-unity-catalog
我是 DataBricks Unity Catalog 的新手,我正在尝试按照https://docs.databricks.com/_static/notebooks/unity-catalog-example-notebook.html上的快速入门笔记本进行操作。
在我看来,我已经做了我必须做的一切:
同一笔记本的唯一(但最重要)失败的 SQL 命令是尝试创建托管 Delta 表并插入两条记录的命令:
CREATE TABLE IF NOT EXISTS quickstart_catalog_mauromi.quickstart_schema_mauromi.quickstart_table
(columnA Int, columnB String) PARTITIONED BY (columnA);
Run Code Online (Sandbox Code Playgroud)
当我运行它时,它开始工作,实际上它开始在我的存储帐户中创建此增量表的文件夹结构

,但是它失败并出现以下错误:
java.util.concurrent.ExecutionException: Failed to acquire a SAS token for list on /data/a3b9da69-d82a-4e0d-9015-51646a2a93fb/tables/eab1e2cc-1c0d-4ee4-9a57-18f17edcfabb/_delta_log due to java.util.concurrent.ExecutionException: com.databricks.sql.managedcatalog.acl.UnauthorizedAccessException: PERMISSION_DENIED: request not authorized
Run Code Online (Sandbox Code Playgroud)
请注意,在运行表创建命令之前,我没有在“unity-catalog”容器下创建任何文件夹。所以看起来是可以成功创建文件夹结构,但是在创建“table”文件夹后,它无法获取“SAS token”。
所以我无法理解,因为我是这个工作区的管理员,并且因为 Databricks 托管身份被分配了存储容器上的贡献者角色,而且因为 Databricks 实际上开始创建其他文件夹。我还应该配置什么?
小智 5
实际上,您可以使用 Unity 和 Databricks Access Connector 在 Azure ADLS Gen2 中施加更多限制。Storage Blob Data Contributor或Owner存储帐户级别的权限不是必需的,并且在企业环境中通常不需要。在测试时,我发现以下访问权限就足够了:
Storage Blob Delegator在存储帐户级别。Storage Blob Data Contributor在存储帐户容器级别。此外,请确保存储帐户的防火墙配置为允许从 Databricks 进行访问(请参阅此处和此处),并确保根据文档配置 CORS 。
我发现:您只需在容器级别将存储 Blob 数据贡献者角色分配给 Azure Databricks 连接器。事实上,您需要在存储帐户级别分配相同的角色和相同的连接器。我在文档中找不到此信息,坦率地说,我无法理解为什么需要此信息,因为创建了增量表路径。
然而,这样一来,它就有效了。
| 归档时间: |
|
| 查看次数: |
7711 次 |
| 最近记录: |