我想知道如何将 Unity 目录中现有(托管/外部)表的位置从存储帐户/Blob 更改为另一个。 我们希望有一种功能可以灵活地将数据存储在根存储/外部位置/之间进行更改
以下步骤将帮助您将元存储移动到 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 步: 单击“保存”以使用新的存储帐户更新元存储。
参考:
以下是升级步骤
为目标表创建目录和数据库。
%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 模式的访问权限或创建模式的权限。
要将现有托管表移至外部表,请执行以下步骤:
要将现有托管表移至 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 • 文档:索引