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 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 作业触发器的源表。