禁用对 Azure Databricks 工作区使用的 Hive 元存储的访问

本文介绍如何禁用对 Azure Databricks 工作区使用的旧 Hive 元存储(无论是工作区本地 Hive 元存储还是外部 Hive 元存储)的直接访问。 完成 Unity 目录迁移或将 Hive 元存储联合为受 Unity 目录控制的外国目录后,可以使用简单的工作区管理员设置来防止用户绕过 Unity 目录并访问 Hive 元存储中注册的表。

Hive 元存储中的数据不受 Unity 目录的约束。 禁用直接 Hive 元存储访问是迁移到 Unity 目录并确保充分利用 Unity 目录数据管理的重要步骤。 可以禁用直接访问,然后利用 Hive 元存储联合继续查询由 Hive 元存储管理的表。 可以在禁用对 Hive 元存储进行的直接工作区访问之前或之后联合 Hive 元存储表。 请参阅 将现有工作区迁移到 Unity 目录Hive 元存储联合:启用 Unity 目录来管理 Hive 元存储中注册的表

Databricks 建议一次性禁用对所有群集和工作负荷的 Hive 元存储的直接访问,但也可以使用 Spark 配置来禁用按群集进行访问。

准备阶段:应该何时禁用旧版元存储?

在禁用旧版 Hive 元存储之前,需要满足以下条件:

  • 你已完成将旧版元存储中注册的所有表迁移到 Unity Catalog 的操作,或者你一直使用 Unity Catalog 而从未使用过旧版 Hive 元存储。
  • 你想强制用户停止使用在旧版元存储中注册的表。
  • 已将所有作业升级到 Databricks Runtime 13.3 LTS 或更高版本。
  • 帐户管理员已打开 Unity 目录:在 帐户控制台 预览 页上禁用旧功能。

禁用旧版元存储时会发生什么?

禁用旧版元存储后:

  • 针对注册到 Hive 元存储的表运行的任何作业都会失败。

  • 会禁用回退

  • 在低于 13.3 的 Databricks Runtime 版本上运行的作业将失败。

    当前正在运行的作业会继续运行,直至被终止为止,但在这些群集上进行的重启操作会失败。

  • “旧版”标题和 hive_metastore 目录会从目录资源管理器浏览器窗格中消失。

  • 尝试显示目录内容的 hive_metastore SQL 命令将失败。

注释

禁用旧访问不会阻止用户使用群集上可用的群集级凭据,例如服务主体。 Databricks 建议从群集中删除此类凭据。

禁用对 Hive 元数据存储的所有直接访问

使用“禁用旧版访问”工作区管理设置禁用工作区的旧版 Hive 元存储:

  1. 以工作区管理员身份登录到 Azure Databricks 工作区。

  2. 单击右上角的用户配置文件菜单,然后从菜单中选择 “设置 ”。

  3. 转到 工作区管理 > 安全

  4. “禁用旧访问 ”设置为 “已禁用”:无法使用旧访问功能

    注释

    如果缺少此设置,请让帐户管理员在帐户控制台中打开>设置。

  5. 若要确保新设置生效,请等待大约五分钟。

  6. 重启所有正在运行的群集。

禁用单个计算群集的访问

可以逐群集逐步禁用直接访问。 跳过上一部分中的步骤,并在任何非无服务器群集上设置以下 Spark 配置:

spark.databricks.unityCatalogOnlyMode True

在 Unity Catalog 迁移期间,当您希望逐步减少对 Hive 元存储的依赖,直到能够为整个工作区禁用它时,此方法非常有用。

请参阅 Spark 配置