共用方式為

删除 Delta 表功能(旧版)

重要

本文档已停用,可能不会更新。 本内容中提及的产品、服务或技术不再受支持。 请参阅删除 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 表功能:

不能删除其他 Delta 表功能

重要

某些 Delta Lake 功能支持多个表格功能。 某些表功能依赖于其他表功能,并可能会阻止删除依赖表功能。 由于某些表功能无法删除,这意味着某些 Delta Lake 功能的启用设置无法回退。

Databricks 建议始终测试依赖的工作负载和系统,以便与新功能兼容,然后再启用升级生产数据的读取器或编写器协议的功能。

启用表功能以删除旧的功能

注释

本节介绍一个仅 Databricks Runtime 16.0 及更低版本中所需的模式。

DROP FEATURE 命令需要支持表功能读写的协议版本。 早期协议版本支持 columnMappingcheckConstraints 之类的 Delta 功能。 可能需要升级协议版本才能删除这些功能,具体取决于表上启用的其他功能。

可以使用以下命令升级表读取器和写入器版本,这样就可以删除列映射并降级协议:

ALTER TABLE <table-name> SET TBLPROPERTIES (
  'delta.minReaderVersion' = '3',
  'delta.minWriterVersion' = '7'
)

如何删除 Delta 表功能?

由于 Delta 表功能会影响表的读取/写入方式,因此在事务日志中必须完全不存在它们才能完全删除。 功能删除的具体情况因功能而异,但你可以参照以下部分提供的总体概述。

功能的移除分为两个步骤,需要经过一段时间才能完成。

步骤 1:准备删除一个表格对象

在第一步中,必须准备删除表功能。 下面介绍了此步骤中发生的情况:

  1. 运行 DROP FEATURE 命令。

  2. 专门启用表功能的表属性具有设置为禁用该功能的值。

  3. 在引入该功能之前,控制与删除的功能关联的行为的表属性的选项设置为默认值。

  4. 根据需要,将重写数据和元数据文件,并遵循更新的表属性。

  5. 该命令完成运行并返回一条错误消息,告知必须等待 24 小时才能继续删除功能。

首次禁用某个功能后,你可以在完成协议降级之前继续写入目标表,但无法使用要删除的表功能。

注释

如果将表保留在此状态,则针对表的操作不会使用表功能,但协议仍然支持表功能。 在完成最后的降级步骤之前,不了解表功能的 Delta 客户端无法读取该表。

步骤 2:降级协议并删除表功能

在第二步中,截断并删除与该功能关联的所有事务历史记录。 这样,就可以删除表功能并降级协议。

  1. 至少经过 24 小时后,您再次执行DROP FEATURE命令,并附加TRUNCATE HISTORY子句。

  2. 客户端确认在指定的保留期阈值内没有事务使用表功能,然后将表历史记录截断到该阈值处。

  3. 协议已降级,移除表格功能。

  4. 如果表中存在的表功能可以由旧协议版本代表,则表的 minReaderVersionminWriterVersion 将降级到刚好支持 Delta 表使用的所有剩余功能的最低版本。

重要

运行 ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY 将删除所有超过 24 小时的事务日志数据。 删除 Delta 表特性后,将无法访问表历史记录或时间旅行功能。

请参阅 Delta Lake 功能兼容性和协议