删除 Delta 表功能
重要
在 Databricks Runtime 14.1 及更高版本中,对删除 Delta 表功能和降级协议版本的支持以公共预览版形式提供。
Azure Databricks 为删除表功能提供有限支持。 若要删除表功能,必须执行以下操作:
- 禁用那些使用表功能的表属性。
- 从支持表的数据文件中删除表功能的所有跟踪。
- 从事务日志中删除使用表功能的事务条目。
- 降级表协议。
在受支持的情况下,你应该仅使用此功能来支持与早期 Databricks Runtime 版本、Delta Sharing 或其他 Delta Lake 读取器或写入器客户端的兼容性。
重要
所有 DROP FEATURE
操作与所有并发写入发生冲突。
流式读取在遇到一个更改表元数据的提交时会失败。 如果你希望流继续进行,必须重启它。 有关建议的方法,请参阅结构化流式处理的生产注意事项。
如何删除 Delta 表功能?
若要删除 Delta 表功能,请运行 ALTER TABLE <table-name> DROP FEATURE <feature-name> [TRUNCATE HISTORY]
命令。 请参阅 ALTER TABLE。
必须使用 Databricks Runtime 14.1 或更高版本,并且必须拥有对目标 Delta 表的 MODIFY
权限。
哪些 Delta 表功能可以删除?
可以删除以下 Delta 表功能:
deletionVectors
。 请参阅什么是删除向量?。v2Checkpoint
。 请参阅表与 liquid 聚类分析的兼容性。
不能删除其他 Delta 表功能。
如何删除 Delta 表功能?
由于 Delta 表功能代表读取器和写入器协议,因此若要完全删除它们,必须将它们从事务日志中完全清除。 功能的删除分两个阶段,需要一段时间才能完成。 功能删除的具体情况因功能而异,但你可以参照以下部分提供的总体概述。
准备删除表功能
在第一阶段,用户准备删除表功能。 下面描述这个阶段发生的事情:
- 用户运行
DROP FEATURE
命令。 - 专门启用表功能的表属性具有设置为禁用该功能的值。
- 在引入该功能之前,控制与删除的功能关联的行为的表属性的选项设置为默认值。
- 视需要根据更新的表属性重写数据和元数据文件。
- 该命令完成运行并返回一条错误消息,通知用户必须等待 24 小时才能继续删除功能。
首次禁用某个功能后,你可以在完成协议降级之前继续写入目标表,但无法使用要删除的表功能。
注意
如果将表保留在此状态,则针对表的操作不会使用表功能,但协议仍然支持表功能。 在完成最后的降级步骤之前,不了解表功能的 Delta 客户端无法读取该表。
降级协议并删除表功能
若要删除表功能,必须删除与该功能关联的所有事务历史记录并降级协议。
- 至少 24 小时过去后,用户再次使用
TRUNCATE HISTORY
子句执行DROP FEATURE
命令。 - 客户端确认指定保留阈值内没有事务使用表功能,然后将表历史记录截断到该阈值处。
- 降级协议,删除表功能。
- 如果表中存在的表功能可以由旧协议版本代表,则表的
minReaderVersion
和minWriterVersion
将降级到刚好支持 Delta 表使用的所有剩余功能的最低版本。
重要
运行 ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY
将删除所有超过 24 小时的事务日志数据。 删除 Delta 表功能后,将无法访问表历史记录或“按时间顺序查看”。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈