表協議版本控製
Delta表的事務日誌包含支持Delta Lake演化的協議版本信息。三角洲湖軌跡最小值Reader和writer版本分開。
三角洲湖擔保向後兼容性.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”)#或DeltaTable.forNameδ.upgradeTableProtocol(1,3.)#升級到readerVersion=1, writerVersion=3
進口io.δ.表.DeltaTable瓦爾δ=DeltaTable.forPath(火花,“path_to_table”)//或DeltaTable.forNameδ.upgradeTableProtocol(1,3.)//升級到readerVersion=1, writerVersion=3。