表版本控制

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

说明

详细文章请参考Databricks官网文章:表版本控制

Delta表的事务日志包含支持Delta Lake演变的版本控制信息。Delta Lake分别跟踪最低检索Delta表详细信息

Delta Lake保证向后兼容。较高版本的Databricks Runtime始终能够读取由较低版本写入的数据。

Delta Lake偶尔会突破兼容性。较低版本的Databricks Runtime可能无法读取和写入由较高版本的Databricks Runtime写入的数据。如果您尝试使用太低的Databricks Runtime版本来读取和写入表,则会收到一条错误消息,提示您需要升级。

创建表时,Delta Lake将根据表特征(例如架构或表属性)选择所需的最低协议版本。您还可以通过设置SQL配置来设置默认协议版本:

  • spark.databricks.delta.protocol.minWriterVersion = 2 (default)

  • spark.databricks.delta.protocol.minReaderVersion = 1 (default)

要将表升级到较新的协议版本,请使用以下DeltaTable.upgradeTableProtocol方法

Python

%pyspark
from delta.tables import DeltaTable
delta = DeltaTable.forPath(spark, "path_to_table") # or DeltaTable.forName
delta.upgradeTableProtocol(1, 3) # upgrades to readerVersion=1, writerVersion=3

Scala

%spark
import io.delta.tables.DeltaTable
val delta = DeltaTable.forPath(spark, "path_to_table") // or DeltaTable.forName
delta.upgradeTableProtocol(1, 3) // upgrades to readerVersion=1, writerVersion=3
警告

协议升级是不可逆的,因此我们建议您仅在需要时才升级特定表,例如选择加入Delta Lake中的新功能。