Delta 資料表屬性參考
Delta Lake 會保留從 delta.
開始的 Delta 數據表屬性。 這些屬性可能有特定意義,而且會在設定這些屬性時影響行為。
注意
設定或更新數據表屬性的所有作業與其他並行寫入作業衝突,導致它們失敗。 只有在數據表上沒有並行寫入作業時,Databricks 才建議您修改數據表屬性。
數據表屬性和 SparkSession 屬性如何互動?
Delta 表的屬性是依表設定的。 如果在資料表上設定了屬性,那麼這個設定會作為預設設定被遵循。
某些資料表屬性具有相關聯的 SparkSession 配置,這些配置會優先於資料表屬性。 一些範例包括 spark.databricks.delta.autoCompact.enabled
和 spark.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 保留邏輯上刪除的資料檔案直到實際刪除前的最短時間。 這是為了避免已過期的讀取器在壓縮操作或分割區覆寫後失效。 此值應該足夠大,以確保:
請參閱設定時光倒流查詢的資料保留。 資料類型: CalendarInterval 預設: interval 1 week |
delta.enableChangeDataFeed true 表示啟用變更資料摘要。請參閱啟用變更資料摘要。 資料類型: Boolean 預設: false |
delta.enableDeletionVectors true 表示啟用更新的刪除向量和預測性 I/O。請參閱什麼是刪除向量?。 資料類型: Boolean 預設值:取決於工作區管理員設定和 Databricks Runtime 版本。 請參閱自動啟用刪除向量 |
delta.isolationLevel 交易必須與並行交易所做的修改隔離的程度。 有效值為 Serializable 與 WriteSerializable 。請參閱 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 預設值:(無) |