Unity Catalog 正式版发行说明
重要
本文档已过时,将来可能不会更新。 本内容中提及的产品、服务或技术不再受支持。 请参阅什么是 Unity Catalog?。
2022 年 8 月 25 日
Unity Catalog 现已在 Azure Databricks 上正式发布。
本文介绍截至 Unity Catalog 正式版发行之日的 Unity Catalog。 它主要侧重介绍自公共预览版以来添加到 Unity Catalog 的功能和更新。 有关 Unity Catalog 的最新信息,请参阅什么是 Unity Catalog?。 有关描述 Unity Catalog 自正式发布以来的更新的发行说明,请参阅 Azure Databricks 平台发行说明和 Databricks Runtime 发行说明版本和兼容性。
元存储限制和资源配额
截至 2022 年 8 月 25 日
- Azure Databricks 帐户每个区域只能有一个元存储
- 一个元存储最多可以有 1000 个目录。
- 一个目录最多可以有 10,000 个架构。
- 一个架构最多可以有 10,000 个表。
有关当前的 Unity Catalog 配额,请参阅资源配额。
正式版支持的存储格式
截至 2022 年 8 月 25 日:
- 所有托管 Unity Catalog 表使用 Delta Lake 存储数据
- 外部 Unity Catalog 表和外部位置支持 Delta Lake、JSON、CSV、Avro、Parquet、ORC 和文本数据。
有关当前 Unity Catalog 支持的表格格式,请参阅文件格式支持。
从帐户控制台管理 Unity Catalog 资源
使用 Azure Databricks 帐户控制台 UI:
- 管理元存储生命周期(创建、更新、删除和查看 Unity Catalog 管理的元存储)
- 为工作区分配和删除元存储
支持的群集类型和 Databricks Runtime 版本
Unity Catalog 需要运行 Databricks Runtime 11.1 或更高版本的群集。 默认情况下,所有 SQL 仓库计算版本都支持 Unity Catalog。
早期版本的 Databricks Runtime 支持预览版 Unity Catalog。 在早期版本的 Databricks Runtime 上运行的群集不支持所有 Unity Catalog 正式版的功能。
创建新群集时,Unity Catalog 需要以下访问模式之一:
- 共享
- 语言:SQL 或 Python
- 可由多个用户共享的安全群集。 群集用户是完全隔离的,因此他们看不到彼此的数据和凭据。
- 单个用户
- 语言:SQL、Scala、Python、R
- 可由指定的单个用户独占使用的安全群集。
有关群集访问模式的详细信息,请参阅访问模式。
有关更高 Databricks Runtime 版本中更新的 Unity Catalog 功能的信息,请参阅这些版本的发行说明。
系统表
Unity Catalog 数据资产完全支持 information_schema
。 每个元存储都包含一个称为 system
的目录,其中包含一个范围为 information_schema
的元存储。 请参阅信息架构。 可以使用 information_schema
回答如下问题:
“计算每个目录的表数”
SELECT table_catalog, count(table_name)
FROM system.information_schema.tables
GROUP BY 1
ORDER by 2 DESC
“显示过去 24 小时内已更改的所有表”
SELECT table_name, table_owner, created_by, last_altered, last_altered_by, table_catalog
FROM system.information_schema.tables
WHERE datediff(now(), last_altered) < 1
结构化流式处理支持
Unity Catalog 现在支持结构化流式处理工作负载。 有关详细信息和限制,请参阅限制。
另请参阅将 Unity Catalog 与结构化流式处理结合使用。
SQL 函数
Unity Catalog 现在完全支持用户定义的 SQL 函数。 有关如何创建和使用 SQL UDF 的信息,请参阅 CREATE FUNCTION (SQL 和 Python)。
Unity Catalog 中外部位置的 SQL 语法
对于外部位置,Spark SQL 现在支持标准数据定义和数据定义语言命令,包括:
CREATE | DROP | ALTER | DESCRIBE | SHOW EXTERNAL LOCATION
还可以使用 GRANT
、REVOKE
和 SHOW
使用 SQL 管理和查看外部位置的权限。 请参阅外部位置。
示例语法:
CREATE EXTERNAL LOCATION <your-location-name>
URL `<your-location-path>'
WITH (CREDENTIAL <your-credential-name>);
GRANT READ FILES, WRITE FILES, CREATE EXTERNAL TABLE ON EXTERNAL LOCATION `<your-location-name>`
TO `finance`;
Unity Catalog 正式版的限制
截至 2022 年 8 月 25 日,Unity Catalog 具有以下限制。 有关当前限制,请参阅限制。
- Scala、R 和使用机器学习运行时的工作负载仅在使用单用户访问模式的群集上受支持。 这些语言的工作负载不支持使用动态视图(出于行级或列级安全性考虑)。
- 将 Unity Catalog 用作克隆的源或目标时,不支持浅表克隆。
- Unity Catalog 表不支持 Bucket。 如果运行尝试在 Unity Catalog 中创建 Bucket 表的命令,则会引发异常。
- 如果某些群集访问 Unity Catalog,而其他群集不访问,则从多个区域的工作区写入相同的路径或 Delta Lake 表可能会导致性能不可靠。
- 仅 Delta 表支持将 DataFrame 写入 Unity Catalog 的覆盖模式,不支持其他文件格式。 用户必须具有对父架构的
CREATE
特权,并且必须是现有对象的所有者。 - 流式处理目前具有以下限制:
- 使用共享访问模式的群集中不支持流式处理。 对于流式处理工作负载,必须使用单用户访问模式。
- 尚不支持异步检查点。
- 在 Databricks Runtime 11.2 及更低版本上,在通用群集或作业群集上持续超过 30 天的流式处理查询将引发异常。 对于长时间运行的流式处理查询,请配置自动作业重试 或使用 Databricks Runtime 11.3 及更高版本。
- 当前不支持从增量实时表管道引用 Unity Catalog 表。
- 以前在工作区中创建的组不能用于 Unity Catalog GRANT 语句。 这是为了确保跨工作区的组视图保持一致。 若要在 GRANT 语句中使用组,请在帐户控制台中创建组,并更新主体或组管理的任何自动化(例如 SCIM、Okta 和 Microsoft Entra ID 连接器以及 Terraform),用于引用帐户终结点而不是工作区终结点。