共用方式為

启用对 Unity Catalog 的外部数据访问

Azure Databricks 使用 Unity REST API 和 Apache Iceberg REST 目录提供对 Unity 目录表的访问。

元存储管理员须为每个需要从外部访问的元存储启用外部数据访问。 配置连接的用户或服务主体必须具有 EXTERNAL USE SCHEMA 执行支持作的每个架构的权限:从托管表读取或创建、读取和写入外部表。

Unity REST API 支持对 Delta 表进行直接读取。 Iceberg REST 目录支持 Delta 表的读取,以及 Iceberg 表的读取和写入。 请参阅使用外部系统来访问 Databricks 数据

在元存储上启用外部数据访问

若要允许外部引擎访问元存储中的数据,元存储管理员必须启用元存储的外部数据访问。 此选项默认禁用,以防止未经授权的外部访问。

要启用外部数据访问,请执行以下操作:

  1. 在附加到元存储的 Azure Databricks 工作区中,单击 “数据”图标。目录

  2. 单击 “齿轮”图标。目录 ”窗格顶部的齿轮图标,然后选择 “元存储”。

  3. 在“详细信息”选项卡上,启用“外部数据访问”。

注意

这些选项仅对具有足够特权的用户显示。 如果没有看到这些选项,则无权为元存储启用外部数据访问。

授予主体 Unity 目录特权

连接到 Azure Databricks 的外部客户端需要来自足够特权主体的授权。

Azure Databricks 支持用于身份验证的 OAuth 和个人访问令牌 (PAT)。 请参阅授权访问 Azure Databricks 资源

请求临时凭据的主体必须具有:

  • 对包含架构或其父目录的 EXTERNAL USE SCHEMA 特权。

    此特权必须始终显式授予。 只有父目录所有者可以授予此特权。 为了避免数据意外外泄,ALL PRIVILEGES 不包括 EXTERNAL USE SCHEMA 特权,架构所有者默认不具有此特权。

  • 对表的 SELECT 权限、对父目录的 USE CATALOG 权限及对父架构的 USE SCHEMA 权限。

  • 如果创建外部表,主体还必须对架构具有CREATE TABLE权限,并且CREATE EXTERNAL TABLEEXTERNAL USE LOCATION对目标外部位置具有权限。

    EXTERNAL USE LOCATION 必须始终显式授予。 只有具有 MANAGE 外部位置特权的用户才能授予它。 为了避免意外外泄, ALL PRIVILEGES 不包括 EXTERNAL USE LOCATION 特权,并且位置所有者默认不具有此权限。

以下示例语法演示如何向用户授予 EXTERNAL USE SCHEMA 权限:

GRANT EXTERNAL USE SCHEMA ON SCHEMA catalog_name.schema_name TO `user@company.com`

以下示例语法演示如何向用户授予 EXTERNAL USE LOCATION 权限:

GRANT EXTERNAL USE LOCATION ON EXTERNAL LOCATION external_location_name TO `user@company.com`

假设用户有权读取架构中的全部所需表,则无需其他权限。 如果需要授予读取表的其他权限,请参阅 Unity Catalog 特权和安全对象