重要
本文档已停用,可能不会更新。 本内容中提及的产品、服务或技术不再受支持。 请参阅删除 Delta Lake 表功能并降级表协议。
本文记录了自 Databricks Runtime 14.3 LTS 起提供的删除 Delta Lake 表功能的公共预览行为。 Databricks 建议使用 Databricks Runtime 16.3 及更高版本中的正式发布功能,这将取代旧行为。 请参阅删除 Delta Lake 表功能并降级表协议。
Azure Databricks 为删除表功能提供有限支持。 删除表功能涉及以下阶段:
- 禁用那些使用表功能的表属性。
- 从支持表的数据文件中移除表功能的所有跟踪。
- 从事务日志中删除使用表功能的事务条目。
- 降级表协议。
重要
所有 DROP FEATURE
操作与所有并发写入发生冲突。
流式读取在遇到一个更改表元数据的提交时会失败。 如果希望流继续进行,必须重启它。 有关建议的方法,请参阅 结构化流式处理的生产注意事项。
如何才能删除 Delta 表功能?
若要删除 Delta 表功能,请运行 ALTER TABLE <table-name> DROP FEATURE <feature-name> [TRUNCATE HISTORY]
命令。 请参阅 ALTER TABLE。
必须使用 Databricks Runtime 14.3 LTS 或更高版本,并且对目标 Delta 表具有 MODIFY
权限。
哪些 Delta 表功能可以删除?
可以删除以下 Delta 表功能:
checkConstraints
。 请参阅 Azure Databricks 的约束。collations-preview
。 请参阅 Delta Lake 的排序规则支持。columnMapping
。 请参阅 有关使用 Delta Lake 列映射重命名和删除列的说明。deletionVectors
。 请参阅什么是删除向量?typeWidening-preview
。 请参阅类型拓宽。v2Checkpoint
。 请参阅 与液体聚类分析的表的兼容性。
不能删除其他 Delta 表功能。
重要
某些 Delta Lake 功能支持多个表格功能。 某些表功能依赖于其他表功能,并可能会阻止删除依赖表功能。 由于某些表功能无法删除,这意味着某些 Delta Lake 功能的启用设置无法回退。
Databricks 建议始终测试依赖的工作负载和系统,以便与新功能兼容,然后再启用升级生产数据的读取器或编写器协议的功能。
启用表功能以删除旧的功能
注释
本节介绍一个仅 Databricks Runtime 16.0 及更低版本中所需的模式。
DROP FEATURE
命令需要支持表功能读写的协议版本。 早期协议版本支持 columnMapping
和 checkConstraints
之类的 Delta 功能。 可能需要升级协议版本才能删除这些功能,具体取决于表上启用的其他功能。
可以使用以下命令升级表读取器和写入器版本,这样就可以删除列映射并降级协议:
ALTER TABLE <table-name> SET TBLPROPERTIES (
'delta.minReaderVersion' = '3',
'delta.minWriterVersion' = '7'
)
如何删除 Delta 表功能?
由于 Delta 表功能会影响表的读取/写入方式,因此在事务日志中必须完全不存在它们才能完全删除。 功能删除的具体情况因功能而异,但你可以参照以下部分提供的总体概述。
功能的移除分为两个步骤,需要经过一段时间才能完成。
步骤 1:准备删除一个表格对象
在第一步中,必须准备删除表功能。 下面介绍了此步骤中发生的情况:
运行
DROP FEATURE
命令。专门启用表功能的表属性具有设置为禁用该功能的值。
在引入该功能之前,控制与删除的功能关联的行为的表属性的选项设置为默认值。
根据需要,将重写数据和元数据文件,并遵循更新的表属性。
该命令完成运行并返回一条错误消息,告知必须等待 24 小时才能继续删除功能。
首次禁用某个功能后,你可以在完成协议降级之前继续写入目标表,但无法使用要删除的表功能。
注释
如果将表保留在此状态,则针对表的操作不会使用表功能,但协议仍然支持表功能。 在完成最后的降级步骤之前,不了解表功能的 Delta 客户端无法读取该表。
步骤 2:降级协议并删除表功能
在第二步中,截断并删除与该功能关联的所有事务历史记录。 这样,就可以删除表功能并降级协议。
至少经过 24 小时后,您再次执行
DROP FEATURE
命令,并附加TRUNCATE HISTORY
子句。客户端确认在指定的保留期阈值内没有事务使用表功能,然后将表历史记录截断到该阈值处。
协议已降级,移除表格功能。
如果表中存在的表功能可以由旧协议版本代表,则表的
minReaderVersion
和minWriterVersion
将降级到刚好支持 Delta 表使用的所有剩余功能的最低版本。
重要
运行 ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY
将删除所有超过 24 小时的事务日志数据。 删除 Delta 表特性后,将无法访问表历史记录或时间旅行功能。
请参阅 Delta Lake 功能兼容性和协议。