本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
说明
详细文章请参考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中的新功能。
文档内容是否对您有帮助?