差異資料表屬性參考
Delta Lake 會從 delta.
開始保留差異資料表屬性。 這些屬性可能有特定意義,並且會在設定這些屬性時影響行為。
注意
設定或更新資料表屬性的所有作業與其他並行寫入作業存在衝突,導致它們失敗。 只有在資料表上沒有並行寫入作業時,Databricks 才建議您修改資料表屬性。
資料表屬性和 SparkSession 屬性如何互動?
差異資料表屬性會按資料表設定。 如果資料表上已設定屬性,則預設會遵循此設定。
某些資料表屬性具有相關聯的 SparkSession 設定,該設定一律優先於資料表屬性。 一些範例包括 spark.databricks.delta.autoCompact.enabled
和 spark.databricks.delta.optimizeWrite.enabled
組態,這會開啟 SparkSession 層級的自動壓縮和最佳化寫入,而不是資料表層級。 Databricks 建議針對大部分工作負載使用資料表範圍設定。
針對每個差異資料表屬性,您可使用 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.appendOnly 這個差異資料表的 true 僅供附加。 如果僅附加,就無法刪除現有的記錄,並且無法更新現有的值。請參閱差異資料表屬性參考。 資料類型: Boolean 預設: false |
delta.autoOptimize.autoCompact auto 表示 Delta Lake 自動最佳化此差異資料表的檔案配置。請參閱 Azure Databricks 上 Delta Lake 的自動壓縮。 資料類型: Boolean 預設值:(無) |
delta.autoOptimize.optimizeWrite true 表示 Delta Lake 自動最佳化寫入期間此差異資料表的檔案配置。請參閱 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 是否針對差異資料表資料行和使用不同名稱的對應 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 在實際刪除資料檔案之前,保留邏輯刪除資料檔案的最短持續時間。 這是為了避免在壓縮或分割區覆寫之後過時讀取器失敗。 此值應該足夠大,以確保: - 如果您在存取差異資料表的並行讀取器或寫入器時執行 VACUUM ,則作業的持續時間大於最長的持續時間。- 如果您執行從資料表讀取的串流查詢,該查詢不會停止超過此值。 否則,查詢可能無法重新啟動,因為它仍然必須讀取舊檔案。 請參閱設定時間移動查詢的資料保留。 資料類型: 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 保留差異資料的歷程記錄的持續時間。 VACUUM 作業會覆寫此保留閾值。每次寫入檢查點時,Delta Lake 會自動清理比保留間隔還早的記錄項目。 如果您將此屬性設定為足夠大的值,則會保留許多記錄項目。 這應該不會影響效能,因為對記錄的作業時間是固定的。 歷程記錄上的作業是平行的,但隨著記錄大小的增加而變得更昂貴。 請參閱設定時間移動查詢的資料保留。 資料類型: CalendarInterval 預設: interval 30 days |
delta.minReaderVersion 允許從這個差異資料表讀取的讀取器的最低必要通訊協定讀取器版本。 Databricks 建議不要手動設定此屬性。 請參閱 Azure Databricks 如何管理 Delta Lake 功能相容性?。 資料類型: Int 預設: 1 |
delta.minWriterVersion 允許寫入這個差異資料表之寫入器所需的最小通訊協定寫入器版本。 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 表示在差異資料表的所有資料版面配置最佳化作業中,一律永遠使用較小的檔案大小。false 表示永遠不會微調為較低的檔案大小,也就是防止自動偵測啟動。請參閱設定 Delta Lake 來控制資料檔大小。 資料類型: Boolean 預設值:(無) |