Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
本页介绍如何启用目录提交,这是一项 Delta 表功能,该功能将提交协调从文件系统转移到 Unity 目录,使目录成为表状态的单一事实来源。
概述
传统的 Delta Lake 事务在单个表级别上协调提交。 每个表单独管理自己的事务日志和冲突检测。 目录提交会将此协调移动到目录级别。 这样,组织就可以一致地通过 Unity 目录管理对 Lakehouse 的所有访问。 它还允许 Unity 目录协调单个事务边界内多个表的提交,同时维护 Delta Lake 的 ACID 保证。
优点
目录提交提供以下功能:
跨多个表的事务:以单次原子提交形式在多个表中运行多条 SQL 语句。 所有变更同时成功或同时失败。 请参阅 事务。
重要
写入 Unity Catalog 托管 Delta 表的事务目前处于公共预览阶段。
受管理的访问权限:读取和写入通过 Unity Catalog 目录进行协调,因此引擎能够看到最新的已提交状态,并应用治理策略。
更快的查询规划和写入:Unity 目录在访问表时直接通知 Delta 客户端表级元数据,跳过云存储并删除元数据延迟的主要源。
可强制约束:Unity 目录验证或拒绝架构和约束更改,防止可能会破坏数据完整性或下游工作负荷的不兼容更新。
外部访问:安全地从外部引擎写入 Unity 目录托管表。 Unity Catalog 管理提交以防止数据损坏和并发冲突。 请参阅使用外部系统来访问 Databricks 数据。
重要
此功能在 Beta 版中。 工作区管理员可以从 预览 页控制对此功能的访问。 请参阅 Manage Azure Databricks 预览版。
要求
- 表必须是 Unity Catalog 管理的表(Delta)。
- 为了读取、写入或创建启用了目录提交的表,需要 Databricks Runtime 16.4 及更高版本。
- 若要在现有表上启用或禁用目录提交,需要 Databricks Runtime 18.0 及更高版本。
启用目录提交
可以在新的表和现有表上启用目录提交。
为新表启用目录提交
创建表时使用 delta.feature.catalogManaged 表属性:
CREATE TABLE sales_data (
sale_id BIGINT,
amount DECIMAL(10,2),
sale_date DATE
)
TBLPROPERTIES ('delta.feature.catalogManaged' = 'supported');
为现有表启用目录变更功能
用于 ALTER TABLE 向现有表添加目录提交:
ALTER TABLE sales_data SET TBLPROPERTIES ('delta.feature.catalogManaged' = 'supported');
重要
在现有表上启用目录提交会将表状态与目录同步。 对于具有高写入工作负荷的表,此操作可能需要几分钟时间。
检查是否启用了目录提交
若要验证表是否已启用目录提交,请执行以下操作:
DESCRIBE DETAIL sales_data;
如果已启用, catalogManaged 则显示在 tableFeatures 列中。
禁用目录提交
可以在 Databricks Runtime 18.0 及更高版本中禁用目录提交。 请参阅删除 Delta Lake 表功能并降级表协议。
警告
请勿在执行 ALTER 或 DROP 语句时取消升级或降级操作。 中断可能会导致表处于部分升级或降级状态,从而锁定其所有未来的读取和写入操作。 若要还原,请再次运行相应的命令,而不是取消。 如果表被锁定,请联系 Databricks 支持部门。
局限性
- 不能使用
CREATE OR REPLACE TABLE或REPLACE TABLE启用或禁用目录提交。 与CREATE TABLE属性一起使用delta.feature.catalogManaged,以便在创建表时启用它,或在ALTER TABLE现有表上启用或禁用它。
- 启用了目录提交的表使用预先签名的 URL 而不是云令牌通过 增量共享进行共享 。
- 启用了目录提交的表顶部的视图不能共享 Delta。
- 具体化视图 和 流式表 不能启用目录提交功能。
- 启用了目录提交功能的表不能作为 Lakeflow 作业触发器的源表。