重要
本文档已停用,可能不会更新。 本内容中提及的产品、服务或技术不再受支持。 请参阅删除 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 或更高版本,并且具有 MODIFY 目标 Delta 表的权限。
可以删除哪些 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 命令需要支持表功能读取和写入的协议版本。 早期协议版本中也支持增量columnMappingcheckConstraints功能。 根据表上启用的其他功能,可能需要先升级协议版本,然后才能删除这些功能。
可以使用以下命令升级表读取器和编写器版本,以便删除列映射并降级协议:
ALTER TABLE <table-name> SET TBLPROPERTIES (
'delta.minReaderVersion' = '3',
'delta.minWriterVersion' = '7'
)
如何删除 Delta 表特性?
由于 Delta 表功能会影响表的读取/写入方式,因此在事务日志中必须完全不存在它们才能完全删除。 功能删除的具体细节因功能而异,但以下部分提供了一般概述。
移除功能分为两个步骤,并需要一些时间才能完成。
步骤 1:准备删除表功能
在第一步中,必须准备删除表功能。 下面介绍了此步骤中发生的情况:
- 运行
DROP FEATURE命令。 - 专门启用表功能的表属性的值设置为禁用该功能。
- 控制与已删除功能关联的行为的表属性在引入功能之前,选项设置为默认值。
- 根据需要,将重写数据和元数据文件,并遵循更新的表属性。
- 该命令完成运行并返回一条错误消息,告知必须等待 24 小时才能继续删除功能。
先禁用某个功能后,可以在完成协议降级之前继续写入目标表,但不能使用要删除的表功能。
注释
如果使表处于此状态,则针对表的作不使用表功能,但协议仍支持表功能。 在完成最终降级步骤之前,Delta 客户端无法读取不支持表功能的表。
步骤 2:降级协议并删除表功能
在第二步中,截断并删除与该功能关联的所有事务历史记录。 这样,就可以删除表功能并降级协议。
- 至少经过 24 小时后,再次执行具有
TRUNCATE HISTORY条件的DROP FEATURE命令。 - 客户端确认指定的保留阈值中没有事务使用表功能,然后将表历史记录截断为该阈值。
- 协议已降级,删除表功能。
- 如果表中存在的功能可以由旧协议版本表示,则表的
minReaderVersion和minWriterVersion属性将被降级到支持 Delta 表正在使用的所有剩余功能的最低版本。
重要
运行 ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY 会删除超过 24 小时的所有事务日志数据。 删除 Delta 表的某项功能后,无法访问表历史记录或对时间的回溯查询。
请参阅 Delta Lake 功能兼容性和协议。