表协议版本控制
Delta表的事务日志包含支持Delta Lake演进的协议版本控制信息。三角洲湖轨道最小值读者版和作者版分开。
三角洲湖保证向后兼容性.Delta Lake读取器的高级协议版本总是能够读取由低级协议版本写入的数据。
三角洲湖偶尔会决堤向前兼容性.低协议版本的Delta Lake可能无法读取和写入由高协议版本的Delta Lake写入的数据。如果您尝试对Delta Lake协议版本太低的表进行读写,则会得到一个错误,提示您需要升级。
在创建表时,Delta Lake根据表的特征(如模式或表属性)选择所需的最小协议版本。你也可以通过设置SQL配置来设置默认的协议版本:
spark.databricks.delta.properties.defaults.minWriterVersion=2
(默认)spark.databricks.delta.properties.defaults.minReaderVersion=1
(默认)
若要将表升级到较新的协议版本,请使用DeltaTable.upgradeTableProtocol
方法:
警告
协议版本升级是不可逆的,升级协议版本可能会破坏现有的Delta Lake表读取器、写入器或两者。因此,我们建议您仅在需要时升级特定的表,例如选择加入Delta Lake的新功能。您还应该检查以确保所有当前和未来的生产工具都支持使用新协议版本的Delta Lake表。
——读取器协议版本升级到1,写入器协议版本升级到3。改变表格<table_identifier>集TBLPROPERTIES(“delta.minReaderVersion”=' 1 ',“delta.minWriterVersion”=“3”)
从delta.tables进口DeltaTableδ=DeltaTable.forPath(火花,“path_to_table”)#或delatable . fornameδ.upgradeTableProtocol(1,3.)#升级到readerVersion=1, writerVersion=3
进口io.δ.表.DeltaTable瓦尔δ=DeltaTable.forPath(火花,“path_to_table”)//或delatable . fornameδ.upgradeTableProtocol(1,3.)//升级到readerVersion=1, writerVersion=3