更改 Unity 目录中现有表的位置

问题描述 投票:0回答:1

我想知道如何将 Unity 目录中现有(托管/外部)表的位置从存储帐户/Blob 更改为另一个。 我们希望有一种功能可以灵活地将数据存储在根存储/外部位置/之间进行更改

azure-databricks azure-data-lake azure-data-lake-gen2 databricks-unity-catalog
1个回答
0
投票

以下步骤将帮助您将元存储移动到 Unity Catalog 中的不同存储帐户。

第 1 步: 为您的 Unity 目录创建一个新的存储帐户。 Stoarge 帐户必须是与您的 Databricks 工作区位于同一区域的 ADLS Gen2 帐户。

第 2 步: 在新创建的存储帐户中创建一个容器并记下 ADLSv2 URI。

第 3 步: 创建服务主体 (SPN) 并为服务主体生成客户端密钥。

步骤 4: 新服务主体需要存储帐户中的存储 blob 数据贡献者角色。 授予存储 blob 数据贡献者。

第 5 步: 登录到 Azure databricks 帐户控制台并单击“数据”。

第 6 步: 单击元存储名称,然后单击编辑。

第 7 步: 现在使用新的存储容器 URI 更新 ADLS Gen 2 路径。

第 8 步: 单击“保存”以使用新的存储帐户更新元存储。

参考:

以下是升级步骤

  • 以下步骤将由 Metastore 管理员执行。
  • 创建启用 Unity Catalog 的集群(DBR 11.1 或更高版本, “单用户”安全模式)。
  • 通过 DBSQL 文档中的数据浏览器 UI 创建凭证。
  • 通过 DBSQL 中的数据资源管理器 UI 或使用以下命令文档创建外部位置。
  • 向将运行 Databricks 作业的用户/主体授予创建表、读取文件和写入文件的权限。建议由主体而不是用户来运行该作业。

为目标表创建目录和数据库。

%sql
CREATE CATALOG uc_batch
CREATE SCHEMA  uc_batch.upgraded _sqldf

向执行升级的用户以及运行流作业的用户/主体授予访问权限。

%sql
CREATE CATALOG uc_batch
CREATE SCHEMA  uc_batch.upgraded _sqldf

%sql
GRANT USAGE ON CATALOG uc_batch; TO 'data_eng'
Grant USAGE.CREATE ON SCHEMA uc_batch.upgraded TO 'data_eng'

以下步骤可由开发人员执行。开发人员必须被授予在外部位置上创建表、读取文件和写入文件的权限。必须向用户授予对 UC 模式的访问权限或创建模式的权限。

要将现有托管表移至外部表,请执行以下步骤:

  • 通过创建数据框将数据从托管表复制到数据湖 使用安装点写入数据湖位置的输出。
  • 使用External在Unity Catalog元存储中创建外部表 指向数据湖中数据的位置。

要将现有托管表移至 Unity Catalog 托管表,请执行以下步骤:

将旧目标表深度克隆到 Unity Catalog 中新创建的表。

%sql
CREATE TABLE IF NOT EXISTS uc_batch.upgraded.salary_adjusted DEEP CLONE hive_metastore.default.salary_adjusted_sqldf

文档:uc-metastore-admin-quickstart文档:hive-metastore文档:索引

© www.soinside.com 2019 - 2024. All rights reserved.