共用方式為


差異數據表屬性參考

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

注意

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

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

差異數據表屬性會為每個數據表設定。 如果數據表上已設定屬性,則這是後面接著預設的設定。

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

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

Delta Lake conf SparkSession conf
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 運行時間版本。 請參閱 自動啟用刪除向量
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

當 設定為 truedelta.randomizeFilePrefixes,Delta Lake 針對隨機前置詞所產生的字元數。

資料類型: Int

預設:2
delta.setTransactionRetentionDuration

新快照集將保留交易標識碼的最短持續時間(例如 SetTransactions)。 當新的快照集看到交易標識碼早於或等於這個屬性所指定的持續時間時,快照集會將其視為已過期並忽略它。 建立 SetTransaction 寫入等冪時,會使用標識符。 如需詳細資訊,請參閱 foreachBatch 中的等冪數據表寫入。

資料類型: CalendarInterval

預設值:(無)
delta.targetFileSize

檔案微調的目標檔案大小,以位元組或更高單位為單位。 例如,
104857600 (位元元組) 或 100mb

請參閱 設定 Delta Lake 來控制資料檔案大小

資料類型: String

預設值:(無)
delta.tuneFileSizesForRewrites

true ,一律針對 Delta 數據表上的所有數據配置優化作業使用較低的檔案大小。

false 表示永遠不會微調為較低的檔案大小,也就是防止自動偵測啟動。

請參閱 設定 Delta Lake 來控制資料檔案大小

資料類型: Boolean

預設值:(無)