共用方式為


Delta 資料表屬性參考

Delta Lake 會保留從 delta.開始的 Delta 數據表屬性。 這些屬性可能有特定意義,而且會在設定這些屬性時影響行為。

注意

設定或更新數據表屬性的所有作業與其他並行寫入作業衝突,導致它們失敗。 只有在數據表上沒有並行寫入作業時,Databricks 才建議您修改數據表屬性。

數據表屬性和 SparkSession 屬性如何互動?

Delta 表的屬性是依表設定的。 如果在資料表上設定了屬性,那麼這個設定會作為預設設定被遵循。

某些資料表屬性具有相關聯的 SparkSession 配置,這些配置會優先於資料表屬性。 一些範例包括 spark.databricks.delta.autoCompact.enabledspark.databricks.delta.optimizeWrite.enabled 組態,其會開啟SparkSession層級的自動壓縮和優化寫入,而不是數據表層級。 Databricks 建議針對大部分工作負載使用數據表範圍設定。

針對每個 Delta 資料表屬性,您可以使用 SparkSession 組態來設定新數據表的預設值,並覆寫內建預設值。 此設定只會影響新的數據表,而且不會覆寫或取代現有數據表上設定的屬性。 SparkSession 中使用的前置詞與數據表屬性中使用的組態不同,如下表所示:

Delta Lake 會議 SparkSession 設定
delta.<conf> spark.databricks.delta.properties.defaults.<conf>

例如,若要為會話中建立的所有新 Delta Lake 數據表設定 delta.appendOnly = true 屬性,請設定下列各項:

SET spark.databricks.delta.properties.defaults.appendOnly = true

若要修改現有資料表的資料表屬性,請使用 SET TBLPROPERTIES

Delta 表格屬性

可用 Delta 資料表的屬性包括下列屬性:

屬性
delta.appendOnly
true 這個 Delta 數據表僅供附加。 如果僅附加,就無法刪除現有的記錄,而且無法更新現有的值。
請參閱 Delta 資料表屬性參考
資料類型:Boolean
預設:false
delta.autoOptimize.autoCompact
auto 讓 Delta Lake 自動優化此 Delta 表格的檔案配置。
請參閱 Azure Databricks 上 Delta Lake 的自動壓縮
資料類型:Boolean
預設值:(無)
delta.autoOptimize.optimizeWrite
true Delta Lake 以在寫入期間自動優化這個 Delta 表的檔案佈局。
請參閱 Azure Databricks 上 Delta Lake 的最佳化寫入
資料類型:Boolean
預設值:(無)
delta.checkpoint.writeStatsAsJson
true 用於 Delta Lake 在檢查點中以 JSON 格式撰寫 stats 欄的檔案統計資訊。
請參閱檢查點中的管理欄位層級統計數據
資料類型:Boolean
預設:true
delta.checkpoint.writeStatsAsStruct
true,Delta Lake 會將檔案統計數據以結構形式寫入 stats_parsed 欄位的檢查點,並將分割值以結構形式寫入 partitionValues_parsed
請參閱 檢查點中的欄位層級統計管理
資料類型:Boolean
預設值:(無)
delta.checkpointPolicy
classic 用於傳統 Delta Lake 檢查點。 v2 用於 v2 檢查點。
請參閱 與液體叢集數據表的相容性。
資料類型:String
預設:classic
delta.columnMapping.mode
是否針對 Delta 資料表數據行和使用不同名稱的對應 Parquet 資料行啟用數據行對應。
請參閱 使用 Delta Lake 欄位映射重新命名和刪除欄位
注意:啟用 delta.columnMapping.mode 將會自動啟用後續功能
delta.randomizeFilePrefixes.
資料類型:DeltaColumnMappingMode
預設:none
delta.dataSkippingNumIndexedCols
Delta Lake 用於資料略過之統計數據收集的欄位數目。 -1 值意味著收集所有欄位的統計數據。
請參閱 Delta Lake 的資料跳過
資料類型:Int
預設:32
delta.dataSkippingStatsColumns
Delta Lake 會收集統計數據,以增強資料篩選功能,而這些統計數據是根據以逗號分隔的欄位名稱清單。 此屬性的優先順序高於 delta.dataSkippingNumIndexedCols
請參閱 Delta Lake 的資料跳過技術
資料類型:String
預設值:(無)
delta.deletedFileRetentionDuration
Delta Lake 保留邏輯上刪除的資料檔案直到實際刪除前的最短時間。 這是為了避免已過期的讀取器在壓縮操作或分割區覆寫後失效。
此值應該足夠大,以確保:
  • 在有並行讀取器或寫入器存取 Delta 資料表的情況下,執行 VACUUM 所需的時間會超過作業可能的最長持續時間。
  • 如果您執行從數據表讀取的串流查詢,該查詢不會停止超過此值。 否則,查詢可能無法重新啟動,因為它仍然必須讀取舊檔案。

請參閱設定時光倒流查詢的資料保留
資料類型:CalendarInterval
預設:interval 1 week
delta.enableChangeDataFeed
true 表示啟用變更資料摘要。
請參閱啟用變更資料摘要
資料類型:Boolean
預設:false
delta.enableDeletionVectors
true 表示啟用更新的刪除向量和預測性 I/O。
請參閱什麼是刪除向量?
資料類型:Boolean
預設值:取決於工作區管理員設定和 Databricks Runtime 版本。 請參閱自動啟用刪除向量
delta.isolationLevel
交易必須與並行交易所做的修改隔離的程度。
有效值為 SerializableWriteSerializable
請參閱 Azure Databricks 上的隔離等級和寫入衝突
資料類型:String
預設:WriteSerializable
delta.logRetentionDuration
Delta 數據表的歷史紀錄保存的期間是多久。 VACUUM 操作會覆寫此保留閾值。
每次寫入檢查點時,Delta Lake 會自動清理比保留間隔還早的記錄項目。 如果您將此屬性設定為足夠大的值,則會保留許多日誌條目。 這應該不會影響效能,因為對記錄的作業時間是固定的。 歷程記錄上的作業是平行的,但隨著記錄大小的增加而變得更昂貴。
請參閱設定時間移動查詢的資料保留
資料類型:CalendarInterval
預設:interval 30 days
delta.minReaderVersion
允許讀取此 Delta 資料表的讀取器所需的最低通訊協定讀取器版本。
Databricks 建議不要手動設定此屬性。
請參閱 Azure Databricks 如何管理 Delta Lake 功能相容性?
資料類型:Int
預設:1
delta.minWriterVersion
允許寫入此 Delta 表格的寫入器所需的最低通訊協定版本。
Databricks 建議不要手動設定此屬性。
請參閱 Azure Databricks 如何管理 Delta Lake 功能相容性?
資料類型:Int
預設:2
delta.randomizeFilePrefixes
true 用於使 Delta Lake 為檔案路徑生成隨機前綴來取代分區資訊。
資料類型:Boolean
預設:false
delta.randomPrefixLength
delta.randomizeFilePrefixes 設定為 true時,Delta Lake 會為隨機前置詞生成指定數量的字元。
資料類型:Int
預設:2
delta.setTransactionRetentionDuration
新快照將保留交易標識符的最短持續時間 (例如 SetTransaction 秒)。 當新的快照集看到交易標識碼早於或等於這個屬性所指定的持續時間時,快照集會將其視為已過期並忽略它。 建立寫入等冪時,會使用 SetTransaction 標識符。 如需詳細資訊,請參閱 foreachBatch中的 等冪數據表寫入。
資料類型:CalendarInterval
預設值:(無)
delta.targetFileSize
檔案微調的目標檔案大小,以位元組或更高單元表示。 例如,
104857600 (位元組) 或 100mb
請參閱設定 Delta Lake 來控制資料檔大小
資料類型:String
預設值:(無)
delta.tuneFileSizesForRewrites
true,一律針對 Delta 數據表上所有數據配置優化作業使用較低的檔案大小。
false 表示防止調整至較小的檔案大小,也就是防止自動偵測功能啟動。
請參閱設定 Delta Lake 來控制資料檔大小
資料類型:Boolean
預設值:(無)