本页演示如何创建 Unity 目录元存储并将其链接到工作区。
重要
对于已自动启用 Unity Catalog 的工作区,不需要参照本页说明。 Databricks 于 2023 年 11 月 9 日自动为 Unity Catalog 启用了新工作区,并逐步跨帐户推出。 只有在您有工作区且工作区所在区域没有元存储时,才可以按照此页面中的说明进行操作。 若要确定区域中是否已存在元存储,请参阅 Unity 目录入门。
元存储是 Unity Catalog 中数据的顶级容器。 Unity Catalog 元存储会注册有关可保护对象(例如表、卷、外部位置和共享)以及控制对其访问的权限的元数据。 每个元存储公开一个三级命名空间 (catalog.schema.table),可在该命名空间组织数据。 对于贵组织开展业务的每个区域,您都必须有一个对应的元存储。 若要使用 Unity Catalog,用户必须在一个已关联到其所在区域元存储的工作区中。
若要创建元存储,请执行以下操作:
在 Azure 帐户中,选择性地为托管表和卷的元存储级别存储创建存储位置。
若要了解如何确定是否需要元存储级别存储,请参阅 在 Unity 目录中指定托管存储位置 ,并在 Unity 目录中指定托管存储位置。
在 Azure 帐户中,创建一个允许访问该存储位置的 Azure 托管标识或服务主体。
在 Azure Databricks 中,创建元存储、附加存储位置,并将工作区分配给元存储。
注意
除了本文中介绍的方法之外,还可以使用 Databricks Terraform 提供程序(特别是 databricks_metastore 资源)来创建元存储。 若要使 Unity Catalog 能够访问元存储,请使用 databricks_metastore_data_access。 若要将工作区链接到元存储,请使用 databricks_metastore_assignment。
开始之前
在开始之前,应熟悉基本的 Unity Catalog 概念,包括元存储和托管存储。 请参阅什么是 Unity Catalog?。
您还应确认在执行所有设置步骤时,自己满足以下要求:
你必须是 Azure Databricks 帐户管理员。
第一个 Azure Databricks 帐户管理员在首次登录 Azure Databricks 帐户控制台时必须是 Microsoft Entra ID 全局管理员。 首次登录时,该用户将成为 Azure Databricks 帐户管理员,并且不再需要使用 Microsoft Entra ID 全局管理员角色来访问 Azure Databricks 帐户。 第一个帐户管理员可以将 Microsoft Entra ID 租户中的用户分配为其他帐户管理员(他们可以自行分配更多的帐户管理员)。 其他账户管理员无需具备 Microsoft Entra ID 中的特定角色。
附加到元存储的工作区必须位于 Azure Databricks 高级计划中。
若要设置元存储级根存储,你必须有权在 Azure 租户中创建以下内容:
- 与 Azure Data Lake Storage 一起使用的存储帐户。 请参阅创建一个存储帐户以与 Azure Data Lake Storage 一起使用。
- 用于保存系统分配的托管标识的新资源。 这要求你是租户中任何订阅中的资源组的参与者或所有者。
步骤 1(可选):为元存储级别托管存储创建存储容器
在此可选步骤中,你将创建一个存储帐户和容器,用于在元存储级别存储托管表和卷数据。 若要确定是否需要元存储级别存储,请参阅 Unity 目录中的“指定托管存储位置”。
为 Azure Data Lake Storage 创建存储帐户。
此存储帐户将包含 Unity Catalog 托管表和卷。 这必须是 Azure Databricks 工作区所在的同一区域中的 Azure Data Lake Storage 帐户。 请参阅创建一个存储帐户以与 Azure Data Lake Storage 一起使用。
创建一个存储容器,用于在元存储层级容纳托管表和卷数据。
在每个区域只能创建一个元存储。 必须为元存储和存储容器使用相同的区域。
可以在目录和架构级别重写此元存储级别存储位置。 请参阅在 Unity Catalog 中指定托管存储位置。
记下容器的 ADLSv2 URI,其格式如下:
abfss://<container-name>@<storage-account-name>.dfs.core.chinacloudapi.cn/<metastore-name>在后续步骤中,将
<storage-container>替换为此 URI。
步骤 2(可选):创建托管标识以访问托管存储位置
只有在完成步骤 1 后才需要执行此步骤。在此步骤中,你将创建一个 Azure Databricks 访问连接器来保存托管标识,并向它授予访问存储容器的权限。
按照使用 Unity Catalog 中的 Azure 托管标识访问存储中的说明进行操作。
注意
可以使用 Azure 托管标识或服务主体作为提供对元存储的存储容器的访问权限的标识。 Databricks 强烈建议使用托管标识,因为它们不需要维护凭据或轮换机密,并且允许连接到受存储防火墙保护的 Azure Data Lake Storage 帐户。 如果要使用服务主体,请参阅使用服务主体(旧版)创建 Unity Catalog 托管存储。
步骤 3:创建元存储并附加工作区
每个 Azure Databricks 区域都需要自己的 Unity Catalog 元存储。
你需要为组织在其中操作的每个区域创建一个元存储。 可以将其中每个区域元存储链接到该区域中任意数量的工作区。 每个链接的工作区对元存储中的数据具有相同的视图,并且可以跨工作区管理数据访问控制。 可以使用 Delta Sharing 访问其他元存储中的数据。
如果选择创建元存储级别存储,那么元存储将使用你在先前步骤中创建的存储容器和 Azure 托管标识。
创建元存储:
如果你选择创建元存储级存储,请确保你已获得存储容器的路径,以及在上一个任务中创建的 Azure Databricks 访问连接器的资源 ID。
以帐户管理员身份登录到工作区。
单击 Azure Databricks 工作区顶部栏中的用户名,然后选择“管理帐户”。
登录到 Azure Databricks 帐户控制台。
单击
目录。
单击“创建元存储”。
输入以下内容:
名称(用于元存储)。
区域,将在该区域部署元存储。
此区域必须与您要用来访问数据的工作区位于同一区域。 如果选择为元存储级别存储创建存储容器,则该区域也必须是相同的。
(可选)ADLS Gen 2 路径:输入将用作元存储根存储位置的存储容器路径。
前缀
abfss://会自动添加。(可选)访问连接器 ID:按以下格式输入 Azure Databricks 访问连接器的资源 ID:
/subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
单击 “创建” 。
出现提示时,选择工作区以链接到元存储。
有关详细信息,请参阅为工作区启用 Unity Catalog。
将元存储管理员角色转移给某个组。
创建元存储的用户是其所有者,也称为元存储管理员。元存储管理员可以在元存储中创建顶级对象(如目录),并且可以管理对表和其他对象的访问权限。 Databricks 建议将元存储管理员角色重新分配给组。 请参阅指定元存储管理员。
启用 Azure Databricks 对托管卷上传内容的管理。
Azure Databricks 使用跨源资源共享 (CORS) 将数据上传到 Unity Catalog 中的托管卷。
使用 Azure 门户导航到存储帐户
选择“设置”>“资源共享(CORS)”
确保选中 Blob 服务 选项卡。 编辑字段,如下所示:
领域 价值 允许的域 https://*.databricks.azure.cn允许的方法 PUT允许的标题 x-ms-blob-type公开的标题 (留空) 最大年龄 1800年 选择“保存”。