将 Hive 表和视图升级到 Unity Catalog

本文介绍如何将现有工作区本地 Hive 元存储中注册的表和视图升级到 Unity Catalog。 可以将 Hive 表升级成 Unity Catalog 中的托管表或者外部表

  • “托管表”是在 Unity Catalog 中创建表的首选方式。 Unity Catalog 完全管理其生命周期、文件布局和存储。 Unity Catalog 还会自动优化托管表的性能。 托管表始终使用 Delta 表格式。

    托管表位于为 Unity Catalog 保留的托管存储位置中。 根据此存储的要求,如果要将现有 Hive 表复制为 Unity Catalog 的托管表,则必须使用 CLONECREATE TABLE AS SELECT (CTAS)。

  • “外部表”是其数据生命周期、文件布局和存储位置不由 Unity Catalog 管理的表。 外部表支持多种数据格式。

    通常,仅当需要直接访问不使用 Databricks 计算(即不使用 Databricks 群集或 Databricks SQL 仓库)的数据时,才使用外部表。 外部表在迁移时也很方便,因为你可以在 Unity Catalog 中快速注册现有数据,而无需复制数据。 这是因为外部表中的数据不必保留在预留的托管存储中。

有关 Unity Catalog 托管表和外部表的详细信息,请参阅

Hive 到 Unity Catalog 的迁移选项

准备将 Hive 表迁移到 Unity Catalog 时,根据具体的用例有多个选项可供选择:

迁移工具 说明 Hive 表要求 创建的 Unity Catalog 表 为何使用?
UCX 一组全面的命令行实用工具和其他工具,用于评估工作区对 Unity Catalog 迁移的准备情况,并执行将标识、权限、存储位置和表迁移到 Unity Catalog 的工作流。 UCX 在 GitHub 上的 databrickslabs/ucx 中。 托管或外部 Hive 表 托管或外部 你需要一个全面的工作区升级规划工具,能够做到不止将 Hive 表升级到 Unity Catalog。 你希望升级 Hive 元存储中具有大量数据的工作区。 你可以轻松地运行脚本。 如果你想要将 Hive 表批量升级到 Unity Catalog 托管表,这就是你唯一的选择。 UCX 与所有 Databricks Labs 项目一样,是一个 GitHub 公共存储库,不直接受 Databricks 支持。
Unity Catalog 升级向导 Catalog 资源管理器功能可以将整个架构(数据库)和多个托管表和外部表从 Hive 元存储中批量复制成 Unity Catalog 元存储的外部表。 升级向导对所选表执行 SYNC 命令,使原始 Hive 表保持不变。 可以选择安排定期升级,以便获取 Hive 源表的更改。 托管或外部 Hive 表 仅外部 你希望快速将 Hive 表升级为 Unity Catalog 的外部表,且希望使用可视化界面。 该实用工具可以安排对 Hive 源表更改的定期同步,能够在过渡到 Unity Catalog 期间管理 Hive 和 Unity Catalog 的“混合”工作区。
SYNC SQL 命令 SYNC 可以将 Hive 元存储的外部表和托管表(如果托管表存储在 Databricks 工作区存储之外[有时称为 DBFS 根])复制成 Unity Catalog 的外部表。 你可以同步单个表或整个架构。

SYNC 被设计为按日程安排运行,以获取 Hive 元存储中的新更改并将其同步到 Unity Catalog。
托管或外部 Hive 表 仅外部 你希望将 Hive 表快速升级为 Unity Catalog 的外部表,且比起可视化界面更喜欢 SQL 命令。

该实用工具可以安排定期运行 SYNC,以在 Hive 源表出现更改的时升级现有 Unity Catalog 表,能够在过渡到 Unity Catalog 期间管理 Hive 和 Unity Catalog 的“混合”工作区。

由于无法使用 SYNC 来升级 Databricks 工作区存储中的托管表,因此请对这些表使用 CREATE TABLE CLONE
CREATE TABLE CLONE SQL 命令 CREATE TABLE CLONE 能够将 Hive 元存储中的托管表升级为 Unity 目录中的托管表。 可以克隆单个表。

首选深层克隆,因为除了克隆现有表的元数据以外,深层克隆还会将源表数据复制到克隆目标。
Delta、Parquet 或 Iceberg 格式的托管 Hive 表。 克隆 Parquet 和 Iceberg 源表有一些特定的要求和限制:请参阅克隆 Parquet 和 Iceberg 表的要求和限制 仅托管 你想要将 Hive 托管表迁移到 Unity Catalog 托管表,以充分利用 Unity Catalog 的数据管理,并且你的 Hive 表满足“Hive 表要求”单元所列的要求。

如果你的 Hive 表不满足“Hive 表要求”,你可以使用 CREATE TABLE AS SELECT SQL 命令将 Hive 表升级为 Unity Catalog 托管表。 但是,CLONE 几乎永远是最佳选择。 克隆的语法比 CREATE TABLE AS SELECT 简单:无需指定分区、格式、不变量、为 Null 性、流、COPY INTO 和其他元数据,这些会从源表处克隆。

本文介绍如何执行 UCX 驱动以外的升级流程。 Databricks 为大多数工作区升级方案推荐使用 UCX。 但是,对于更简单的用例,本文所述的工具可能更合适。

开始之前的准备工作

本部分介绍一些应考虑的迁移影响以及权限和计算要求。

了解影响

请注意在修改工作负载以使用新的 Unity Catalog 表时,你可能需要更改一些行为:

  • Unity Catalog 管理分区的方式与 Hive 不同。 Unity Catalog 管理的表不支持直接操作分区的 Hive 命令。
  • 运行 CREATE TABLE CLONE 时,表历史记录不会迁移。 所有克隆到 Unity Catalog 的 Hive 元存储表都被视为新表。 无法执行 Delta Lake 时间旅行或其他依赖于迁移前历史记录的操作。

更多信息请参阅使用 Unity Catalog 和旧式 Hive 元存储

要求

若要执行迁移,则必须具备:

  • 具有 Unity Catalog 元存储以及至少一个 Unity Catalog 目录的工作区。 请参阅设置和管理 Unity Catalog

  • 对表迁移目的地的 Unity Catalog 目录的权限。 本文介绍的每个程序的开头都会枚举这些权限要求。

  • 若要迁移到 Unity Catalog 外部表:存储凭据和 Unity Catalog 规定的外部位置,以及对外部位置的 CREATE EXTERNAL TABLE 权限。

  • 对同时满足以下要求的 Azure Databricks 计算的访问权限:

    • 支持 Unity Catalog(使用单用户或共享访问模式的 SQL 仓库或计算资源)。
    • 允许访问 Hive 元存储中的表。

    由于默认为旧表访问控制启用共享访问模式的计算资源,因此如果使用该访问模式,则必须对迁移源头的 Hive 元存储拥有表访问控制权限。 可以使用以下 SQL 命令授予自己访问权限:

    GRANT all_privileges ON catalog hive_metastore TO `<user>`
    

    或者,可以使用单用户访问模式的计算资源。

有关管理对 Hive 元存储对象的权限的详细信息,请参阅 Hive 元存储权限和安全对象(旧版)。 有关管理对 Unity Catalog 元存储对象的权限的详细信息,请参阅管理 Unity Catlog 的权限

确认 Hive 元存储管理的表

若要确定表当前是否在 Unity Catalog 中注册,请检查目录名称。 hive_metastore 目录中的表注册在工作区本地 Hive 元存储中。 列出的任何其他目录都由 Unity Catalog 管理。

如需使用 Catalog 资源管理器查看 hive_metastore 目录中的表:

  1. 点击边栏中的目录图标目录
  2. 在目录窗格中,浏览到 hive_metastore 目录并展开架构节点。

还可以使用目录窗格中的筛选器搜索特定的表。

使用升级向导将架构或多个表从 Hive 元存储升级为 Unity Catalog 外部表

可以使用“Catalog 资源管理器”升级向导将完整架构(数据库)和多个外部表从 Azure Databricks 的默认 Hive 元存储复制到 Unity Catalog 元存储中。 升级后的表将成为 Unity Catalog 的外部表。

如需获得帮助以决定何时使用升级向导,请参阅 Hive 到 Unity 目录的迁移选项

要求

数据格式要求:

计算要求:

  • 支持 Unity Catalog 的计算资源。 请参阅准备工作

Unity Catalog 对象和权限要求:

  • Azure 托管标识或服务主体的存储凭据,授权 Unity Catalog 访问表的位置路径。
  • 一个外部位置,可引用刚创建的存储凭据和云租户数据的路径。
  • 对要升级的表的外部位置具有 CREATE EXTERNAL TABLE 权限。

Hive 表访问要求:

  • 如果计算使用共享访问模式,则需要 Hive 元存储表的访问权限(使用旧表访问控制获得)。 请参阅准备工作

升级过程

  1. 请单击边栏中的“目录”图标目录”以打开目录资源管理器

  2. 选择 hive_metastore 作为你的目录,然后选择要升级的架构(数据库)。

    选择数据库

  3. 单击架构详细信息视图右上角的“升级”。

  4. 选择要升级的所有表,然后单击“下一步”。

    只能使用升级向导升级 Unity Catalog 支持的格式外部表

  5. 为每个表设置目标目录、架构(数据库)和所有者。

    用户将能够在其对目录和架构的权限的上下文中访问新创建的表。

    表所有者对表拥有所有权限,包括 SELECTMODIFY。 如果未选择所有者,系统会创建将你作为所有者的托管表。 Databricks 通常建议你将表所有权授予组。 若要详细了解 Unity Catalog 中的对象所有权,请参阅管理 Unity Catalog 对象所有权

    若要将相同的目录和架构分配给多个表,请选择这些表,然后单击“设置目标”按钮。

    若要将同一所有者分配给多个表,请选择这些表,然后单击“设置所有者”按钮。

  6. 检查表配置。 若要修改它们,请单击“上一步”按钮。

  7. 单击“创建查询以进行升级”。

    此时会显示一个查询编辑器,其中包含生成的 SQL 语句。

  8. 运行查询。

    查询完成后,每个表的元数据已从 Hive 元存储复制到 Unity Catalog。 这些表在升级向导中标记为“已升级”。

  9. 使用每个新表的“权限”选项卡定义精细访问控制。

  10. (可选)给每个将用户指向新 Unity Catalog 表的升级 Hive 表添加注释。

    返回到 hive.metastore 目录中的原始表以添加表注释。

    如果在表注释中使用以下语法,引用已弃用的 Hive 表的笔记本和 SQL 查询编辑器查询将以删除线文本显示已弃用的表名称、将注释显示为警告并提供指向 Databricks 助手的“快速修复”链接,如此可以更新代码以引用新表。

    This table is deprecated. Please use catalog.default.table instead of hive_metastore.schema.table.
    

    请参阅添加注释以指示已迁移的 Hive 表

  11. 修改工作负载以使用新表。

    如果将注释添加到原始 Hive 表中(如上一步中列出的注释),则可以使用“快速修复”链接和 Databricks 助手来帮助查找和修改工作负载。

使用升级向导将单个 Hive 表升级为 Unity Catalog 外部表

可以使用“Catalog 资源管理器”中的升级向导将单个表从默认的 Hive 元存储复制到 Unity Catalog 元存储中

如需获得帮助以决定何时使用升级向导,请参阅 Hive 到 Unity 目录的迁移选项

要求

数据格式要求:

计算要求:

  • 支持 Unity Catalog 的计算资源。 请参阅准备工作

Unity Catalog 对象和权限要求:

  • Azure 托管标识或服务主体的存储凭据,授权 Unity Catalog 访问表的位置路径。
  • 一个外部位置,可引用刚创建的存储凭据和云租户数据的路径。
  • 对要升级的表的外部位置具有 CREATE EXTERNAL TABLE 权限。

升级过程

若要升级外部表,请执行以下操作:

  1. 请单击边栏中的“目录”图标目录”,以打开目录资源管理器

  2. 依次选择要升级的数据库和表。

  3. 单击表详细信息视图右上角的“升级”

  4. 选择要升级的表,然后单击“下一步”

  5. 选择目标目录、架构(数据库)和所有者。

    用户将能够在其对目录和架构的权限的上下文中访问新创建的表。

    表所有者对表拥有所有权限,包括 SELECTMODIFY。 如果未选择所有者,系统会创建将你作为所有者的托管表。 Databricks 通常建议你将表所有权授予组。 若要详细了解 Unity Catalog 中的对象所有权,请参阅管理 Unity Catalog 对象所有权

  6. 单击表详细信息视图右上角的“升级”

  7. 选择要升级的表,然后单击“下一步”

    表元数据现在已复制到 Unity Catalog,并已创建一个新表。 现在可以使用“权限”选项卡来定义精细的访问控制。

  8. 使用“权限”选项卡来定义精细的访问控制。

  9. (可选)给每个将用户指向新 Unity Catalog 表的 Hive 表添加注释。

    返回到 hive.metastore 目录中的原始表以添加表注释。

    如果在表注释中使用以下语法,引用已弃用的 Hive 表的笔记本和 SQL 查询编辑器查询将以删除线文本显示已弃用的表名称、将注释显示为警告并提供指向 Databricks 助手的“快速修复”链接,如此可以更新代码以引用新表。

    This table is deprecated. Please use catalog.default.table instead of hive_metastore.schema.table.
    

    请参阅添加注释以指示已迁移的 Hive 表

  10. 修改现有工作负荷以使用新表。

    如果将注释添加到原始 Hive 表中(如上一步中列出的注释),则可以使用“快速修复”链接和 Databricks 助手来帮助查找和修改工作负载。

    注意

    如果不再需要旧表,可以将其从 Hive 元存储中删除。 删除外部表不会修改云租户上的数据文件。

使用 SYNC 将 Hive 表升级为 Unity Catalog 外部表

使用 SYNC SQL 命令将 Hive 元存储中的外部表升级为 Unity Catalog 中的外部表。 你可以同步单个表或整个架构。

还可以使用 SYNC 将存储在 Databricks 工作区存储(有时称为 DBFS 根)外部的 Hive 托管表升级为 Unity Catalog 中的外部表。 无法使用此命令来复制保存在工作区存储中的 Hive 托管表。 若要复制这些表,请使用 CREATE TABLE CLONE

SYNC 命令对它升级的每个源表执行写入操作,以便为簿记添加一些额外的表属性,包括目标 Unity Catalog 外部表的记录。

当 Hive 元存储中的源表发生更改时,也可以使用 SYNC 更新现有的 Unity Catalog 表。 这可用于逐步过渡到 Unity Catalog。

有关详细信息,请参阅 SYNC。 如需获得帮助以决定何时使用升级向导,请参阅 Hive 到 Unity 目录的迁移选项

要求

数据格式要求:

计算要求:

  • 支持 Unity Catalog 的计算资源。 请参阅准备工作

Unity Catalog 对象和权限要求:

  • Azure 托管标识或服务主体的存储凭据,授权 Unity Catalog 访问表的位置路径。
  • 一个外部位置,可引用刚创建的存储凭据和云租户数据的路径。
  • 对要升级的表的外部位置具有 CREATE EXTERNAL TABLE 权限。

Hive 表访问要求:

  • 如果计算使用共享访问模式,则需要 Hive 元存储表的访问权限(使用旧表访问控制获得)。 请参阅准备工作

升级流程

如需使用 SYNC 将 Hive 元存储中的表升级为 Unity Catalog 外部表:

  1. 在笔记本或 SQL 查询编辑器中运行以下其中一个命令:

    同步外部 Hive 表:

    SYNC TABLE <uc-catalog>.<uc-schema>.<new-table> FROM hive_metastore.<source-schema>.<source-table>
    SET OWNER <principal>;
    

    同步外部 Hive 架构及其所有表:

    SYNC SCHEMA <uc-catalog>.<new-schema> FROM hive_metastore.<source-schema>
    SET OWNER <principal>;
    

    同步保存在 Databricks 工作区存储外的托管 Hive 表:

    SYNC TABLE <uc-catalog>.<uc-schema>.<new-table> AS EXTERNAL FROM hive_metastore.<source-schema>.<source-table>
    SET OWNER <principal>;
    

    同步包含保存在 Databricks 工作区存储外的托管 Hive 表的架构:

    SYNC SCHEMA <uc-catalog>.<new-schema> AS EXTERNAL FROM hive_metastore.<source-schema>
    SET OWNER <principal>;
    
  2. 授予帐户级用户或组对新表的访问权限。 请参阅在 Unity Catalog 中管理权限

  3. (可选)给每个将用户指向新 Unity Catalog 表的 Hive 原始表添加注释。

    返回到 hive.metastore 目录中的原始表以添加表注释。 若要了解如何使用 Catalog 资源管理器添加表注释,请参阅使用 Catalog 资源管理器向数据对象添加 markdown 注释。 若要了解如何在笔记本或 SQL 查询编辑器中使用 SQL 语句添加表注释,请参阅 COMMENT ON

    如果在表注释中使用以下语法,引用已弃用的 Hive 表的笔记本和 SQL 查询编辑器查询将以删除线文本显示已弃用的表名称、将注释显示为警告并提供指向 Databricks 助手的“快速修复”链接,如此可以更新代码以引用新表。

    This table is deprecated. Please use catalog.default.table instead of hive_metastore.schema.table.
    

    请参阅添加注释以指示已迁移的 Hive 表

  4. 迁移表后,用户应更新其现有查询和工作负载以使用新表。

    如果将注释添加到原始 Hive 表中(如上一步中列出的注释),则可以使用“快速修复”链接和 Databricks 助手来帮助查找和修改工作负载。

  5. 在删除旧表之前,请通过撤消对它的访问权限并重新运行相关查询和工作负载来测试依赖项。

    如果还需要弃用注释来帮助查找和更新引用旧表的现有代码,请不要删除旧表。 同样,如果自初始同步以来表有所更改,请不要删除旧表:可用 SYNC 更新现有 Unity Catalog 表和 Hive 原表的更改。

使用 CLONE 将 Hive 托管表升级为 Unity Catalog 托管表

使用 CREATE TABLE CLONE 将 Hive 元存储中的托管表升级为 Unity Catalog 中的托管表。 可以克隆单个表。 深层克隆除了克隆现有表的元数据以外,还会将源表数据复制到克隆目标中。 如果要删除 Hive 源表,请使用深层克隆。 浅表克隆不会将数据文件复制到克隆目标中,而是通过引用源数据来访问这些文件:表元数据等效于源。 浅表克隆的创建成本更低,但要求想查询克隆目标中数据的用户也有权访问源数据。

如需获得帮助以决定何时使用 CLONE,请参阅 Hive 到 Unity 目录的迁移选项。 如需获得帮助以决定该使用哪种克隆类型,请参阅在 Azure Databricks 克隆表

要求

数据格式要求:

计算要求:

  • 支持 Unity Catalog 的计算资源。 请参阅准备工作

权限要求:

  • 对(表添加对象的)目录和架构的 USE CATALOGUSE SCHEMA 权限,以及对架构的 CREATE TABLE 权限,或者必须是目录或架构的所有者。 请参阅 Unity Catalog 特权和安全对象
  • 如果计算使用共享访问模式,则需要 Hive 元存储表的访问权限(使用旧表访问控制获得)。 请参阅准备工作

升级流程

如需将 Hive 元存储中的托管表升级为 Unity Catalog 中的托管表:

  1. 在笔记本或 SQL 查询编辑器中运行以下其中一个命令:

    深入克隆 Hive 元存储中的托管表:

    CREATE OR REPLACE TABLE <uc-catalog>.<uc-schema>.<new-table>
    DEEP CLONE hive_metastore.<source-schema>.<source-table>;
    

    浅表克隆 Hive 元存储中的托管表:

    CREATE OR REPLACE TABLE <uc-catalog>.<uc-schema>.<new-table>
    SHALLOW CLONE hive_metastore.<source-schema>.<source-table>;
    

    有关其他参数(包括表属性)的信息,请参阅 CREATE TABLE CLONE

  2. 授予帐户级用户或组对新表的访问权限。 请参阅在 Unity Catalog 中管理权限

  3. (可选)给每个将用户指向新 Unity Catalog 表的 Hive 原始表添加注释。

    返回到 hive.metastore 目录中的原始表以添加表注释。 若要了解如何使用 Catalog 资源管理器添加表注释,请参阅使用 Catalog 资源管理器向数据对象添加 markdown 注释。 若要了解如何在笔记本或 SQL 查询编辑器中使用 SQL 语句添加表注释,请参阅 COMMENT ON

    如果在表注释中使用以下语法,引用已弃用的 Hive 表的笔记本和 SQL 查询编辑器查询将以删除线文本显示已弃用的表名称、将注释显示为警告并提供指向 Databricks 助手的“快速修复”链接,如此可以更新代码以引用新表。

    This table is deprecated. Please use catalog.default.table instead of hive_metastore.schema.table.
    

    请参阅添加注释以指示已迁移的 Hive 表

  4. 迁移表后,用户应更新其现有查询和工作负载以使用新表。

    如果将注释添加到原始 Hive 表中(如上一步中列出的注释),则可以使用“快速修复”链接和 Databricks 助手来帮助查找和修改工作负载。

  5. 在删除旧表之前,请通过撤消对它的访问权限并重新运行相关查询和工作负载来测试依赖项。

    如果还需要弃用注释来帮助查找和更新引用旧表的现有代码,请不要删除旧表。 同样,如果执行浅表克隆,请不要删除旧表。 浅表克隆会引用 Hive 源表中的数据。

使用 CLONE TABLE AS SELECT 将 Hive 表升级为 Unity Catalog 托管表

如果无法或不想使用 CREATE TABLE CLONE 将 Hive 元存储中的表迁移为 Unity Catalog 的托管表,则可以使用 CREATE TABLE AS SELECT 查询 Hive 表,以在 Unity Catalog 中创建一个新的托管表。 有关 CREATE TABLE CLONECREATE TABLE AS SELECT 之间的差异,请参阅 Hive 到 Unity Catalog 的迁移选项

要求

计算要求:

  • 支持 Unity Catalog 的计算资源。 请参阅准备工作

权限要求:

  • 对(表添加对象的)目录和架构的 USE CATALOGUSE SCHEMA 权限,以及对架构的 CREATE TABLE 权限,或者必须是目录或架构的所有者。 请参阅 Unity Catalog 特权和安全对象
  • 如果计算使用共享访问模式,则需要 Hive 元存储表的访问权限(使用旧表访问控制获得)。 请参阅准备工作

升级流程

如需使用 CREATE TABLE AS SELECT 将 Hive 元存储中的表升级为 Unity Catalog 中的托管表:

  1. 查询现有表以新建 Unity Catalog 表。 替换占位符值替:

    • <uc-catalog>:新表的 Unity Catalog 目录。
    • <uc-schema>:新表的 Unity Catalog 架构。
    • <new-table>:Unity Catalog 表的名称。
    • <source-schema>:Hive 表的架构,例如 default
    • <source-table>:Hive 表的名称。

    SQL

    CREATE TABLE <uc-catalog>.<new-schema>.<new-table>
    AS SELECT * FROM hive_metastore.<source-schema>.<source-table>;
    

    Python

    df = spark.table("hive_metastore.<source-schema>.<source-table>")
    
    df.write.saveAsTable(
      name = "<uc-catalog>.<uc-schema>.<new-table>"
    )
    

    R

    %r
    library(SparkR)
    
    df = tableToDF("hive_metastore.<source-schema>.<source-table>")
    
    saveAsTable(
      df = df,
      tableName = "<uc-catalog>.<uc-schema>.<new-table>"
    )
    

    Scala

    val df = spark.table("hive_metastore.<source-schema>.<source-table>")
    
    df.write.saveAsTable(
      tableName = "<uc-catalog>.<uc-schema>.<new-table>"
    )
    

    如果只想迁移某些列或行,请修改 SELECT 语句。

    注意

    此处提供的命令会创建一个托管表,托管表的数据会被复制到专用的托管存储位置。 若要创建外部表(即表注册在 Unity Catalog 中且数据不会移动到云存储中),请参阅使用升级向导将单个 Hive 表升级为 Unity Catalog 外部表。 还可以参阅在 Unity Catalog 中指定托管存储位置

  2. 授予帐户级用户或组对新表的访问权限。 请参阅在 Unity Catalog 中管理权限

  3. (可选)给每个将用户指向新 Unity Catalog 表的 Hive 原始表添加注释。

    返回到 hive.metastore 目录中的原始表以添加表注释。 若要了解如何使用 Catalog 资源管理器添加表注释,请参阅使用 Catalog 资源管理器向数据对象添加 markdown 注释。 若要了解如何在笔记本或 SQL 查询编辑器中使用 SQL 语句添加表注释,请参阅 COMMENT ON

    如果在表注释中使用以下语法,引用已弃用的 Hive 表的笔记本和 SQL 查询编辑器查询将以删除线文本显示已弃用的表名称、将注释显示为警告并提供指向 Databricks 助手的“快速修复”链接,如此可以更新代码以引用新表。

    This table is deprecated. Please use catalog.default.table instead of hive_metastore.schema.table.
    

    请参阅添加注释以指示已迁移的 Hive 表

  4. 迁移表后,用户应更新其现有查询和工作负载以使用新表。

    如果将注释添加到原始 Hive 表中(如上一步中列出的注释),则可以使用“快速修复”链接和 Databricks 助手来帮助查找和修改工作负载。

  5. 在删除旧表之前,请通过撤消对它的访问权限并重新运行相关查询和工作负载来测试依赖项。

    如果还需要弃用注释来帮助查找和更新引用旧表的现有代码,请不要删除旧表。

将视图升级到 Unity Catalog

将视图的所有引用表升级到同一 Unity Catalog 元存储后,可以新建视图来引用新表。

添加注释以指示已迁移的 Hive 表

如果为将用户指向 Unity Catalog 新表的 Hive 弃表添加注释,那么引用 Hive 弃表的笔记本和 SQL 查询编辑器查询将以删除线文本显示已弃用的表名称、将注释显示为警告并提供指向 Databricks 助手的“快速修复”链接,如此可以更新代码以引用新表。

Hive 表弃用警告

注释必须使用以下格式:

This table is deprecated. Please use catalog.default.table instead of hive_metastore.schema.table.

若要了解如何使用 Catalog 资源管理器添加表注释,请参阅使用 Catalog 资源管理器向数据对象添加 markdown 注释。 若要了解如何在笔记本或 SQL 查询编辑器中使用 SQL 语句添加表注释,请参阅 COMMENT ON

使用 Databricks 助手更新已弃用的表引用

如果在笔记本单元格或 SQL 查询编辑器的语句中看到有删除线的表名,请将鼠标悬停在表名上以显示警告通知。 如果警告通知说表已弃用并显示新表名称,请先单击“快速修复”,然后点击“修复弃用”。 Databricks 助手随即打开,建议将弃用的表名称替换为新的 Unity Catalog 表名称。 根据提示完成任务。

展示使用 Databricks 助手更新 Hive 表的视频

还可以参阅使用 Databricks 助手