表格屬性參考資料

Delta Lake 與 Apache Iceberg 資料表利用資料表屬性來設定行為與功能,包括資料佈局、檔案大小、資料跳過、隔離層級及變更資料饋送。

備註

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

修改資料表屬性

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

Delta 與 Iceberg 屬性前綴

Delta Lake 與 Apache Iceberg 資料表共享相同的資料表屬性名稱,但需要不同的前綴:

  • 三角洲湖表格:請使用前 delta.
  • 冰山表:使用 iceberg. 前綴

例如,要啟用表格上的刪除向量:

三角洲湖

ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);

Iceberg

ALTER TABLE <table-name> SET TBLPROPERTIES ('iceberg.enableDeletionVectors' = true);

資料表屬性與 SparkSession 屬性

每個資料表都有自己的資料表屬性來控制其行為。 有些 SparkSession 配置總是會覆蓋表格屬性。 例如, autoCompact.enabled 並在 optimizeWrite.enabled 層級啟用自動壓縮與最佳化寫入 SparkSession 。 Databricks 建議對於大部分工作負載使用表格範圍配置。

你可以用 SparkSession 設定設定新資料表的預設值。 這些預設只適用於新資料表,不影響現有資料表屬性。 SparkSession 配置使用與表格屬性不同的前綴,如下表所示:

表格屬性 SparkSession 設定
delta.<conf>
iceberg.<conf>
spark.databricks.delta.properties.defaults.<conf>
spark.databricks.iceberg.properties.defaults.<conf>

例如,要設定所有在會話中新建立的資料表的 appendOnly = true 屬性,請設定以下內容:

三角洲湖

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

Iceberg

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

表格屬性

以下大多數表格屬性可同時提供三角洲湖與阿帕奇冰山表,除非另有說明。 Delta Lake 表格delta.iceberg.前綴,Iceberg 表格用前綴。

房產 Description
appendOnly true 讓表格僅附錄。 僅附錄表格不允許刪除現有紀錄或更新現有值。
資料類型:Boolean
預設:false
autoOptimize.autoCompact 自動將小檔案合併在表格分割區內,以減少小檔案問題。 接受 auto (建議)、 truelegacy、或 false
參見 自動壓實
資料類型:String
預設值:(無)
autoOptimize.optimizeWrite true 在寫入時自動優化此表格的檔案配置。
參見 優化寫入
資料類型:Boolean
預設值:(無)
checkpoint.writeStatsAsJson true 以 JSON 格式將檔案統計資料寫入檢查點,針對 stats 欄位。
資料類型:Boolean
預設:false
checkpoint.writeStatsAsStruct true將檔案統計資料以結構格式寫入檢查點,並將分割區值作為結構寫入stats_parsed
資料類型:Boolean
預設:true
checkpointPolicy classic 經典檢查點。 v2 用於 v2 檢查點。
有關具備液體聚類的表格,請參見 Checkpoint V2 與相容性。
資料類型:String
預設:classic
columnMapping.mode 啟用欄位映射,適用於使用不同名稱的表格欄位及對應的 Parquet 欄位。 有效值為 nonenameid
請參閱 使用 Delta Lake 欄位映射重新命名和刪除欄位
注意:啟用 columnMapping.mode 會自動啟用 randomizeFilePrefixes
資料類型:DeltaColumnMappingMode
預設:none
compatibility.symlinkFormatManifest.enabled (僅限三角洲湖) true 配置 Delta Lake 資料表,使所有寫入操作自動更新清單。
資料類型:Boolean
預設:false
dataSkippingNumIndexedCols 為了收集資料跳躍統計所需的欄位數量。 -1 值意味著收集所有欄位的統計數據。
詳見資料跳過。
資料類型:Int
預設:32
dataSkippingStatsColumns 一份逗號分隔的欄位名稱清單,用於收集統計資料以提升資料跳過功能。 此屬性的優先順序高於 dataSkippingNumIndexedCols
詳見資料跳過。
資料類型:String
預設值:(無)
deletedFileRetentionDuration 這是保留邏輯刪除資料檔案的最短時間,然後再實體刪除。 這可防止在合併壓縮或分割區覆寫後,過時的讀取器發生故障。
Databricks 建議預設值為 7 天或以上。 如果保留期太短,長期執行的作業可能會在作業完成前就被刪除其未提交的檔案。
請參閱設定時光旅行查詢中的資料保留政策
資料類型:CalendarInterval
預設:interval 1 week
enableChangeDataFeed true 啟用變更資料流。
請參見 使用變更資料串流
資料類型:Boolean
預設:false
enableDeletionVectors true 以啟用刪除向量和預測性 I/O 來進行更新。
請參閱 Databricks 中的刪除向量啟用刪除向量
資料類型:Boolean
預設值:取決於工作區管理員設定和 Databricks Runtime 版本。 請參閱自動啟用刪除向量
enableIcebergCompatV2 (僅限三角洲湖) true 啟用 IcebergCompatV2,該軟體以與 Iceberg 讀取器相容的格式寫入資料。 要啟用 Iceberg 讀取,請將此性質與 一起設定。universalFormat.enabledFormats
請參閱 使用 Iceberg 用戶端讀取 Delta Lake 資料表
資料類型:Boolean
預設值:(無)
enableRowTracking (僅限三角洲湖) true 啟用列追蹤,為每一列分配穩定的列 ID 與列提交版本以實現列層級的血緣。 支援 Databricks 執行環境 14.0 及以上版本。 Apache Iceberg v3 表格自動包含列追蹤功能。
請參見 Azure Databricks 中的列追蹤
資料類型:Boolean
預設:false
enableTypeWidening true 表示啟用類型擴大。
請參閱類型擴展
資料類型:Boolean
預設:false
format-version (僅支援Apache Iceberg管理的資料表) 冰山表格式版本。
Databricks 建議不要手動設定此屬性。
請參閱 使用 Apache Iceberg v3 功能
資料類型:Int
預設:2
isolationLevel 交易需要與其他同時進行的交易所產生的修改保持隔離的程度。
有效值為 SerializableWriteSerializable
參見隔離層級(WriteSerializable 與 Serializable)。
資料類型:String
預設:WriteSerializable
logRetentionDuration 要保存一個資料表的歷史紀錄多久? VACUUM 操作會覆寫此保留閾值。
Databricks 每次寫入檢查點時,會自動清理比保留間隔更早的日誌條目。 將此屬性設為較大值可保留許多日誌條目。 這不會影響效能,因為對日誌的操作是常數時間。 操作歷史紀錄是平行進行的,但隨著記錄文件大小增加,成本會增加。
請參閱設定時光旅行查詢中的資料保留政策
資料類型:CalendarInterval
預設:interval 30 days
minReaderVersion (僅限三角洲湖) 讀取此表所需的最低協定讀取版本。
Databricks 建議不要手動設定此屬性。
請參閱 Delta Lake 功能相容性和通訊協定
資料類型:Int
預設:1
minWriterVersion (僅限三角洲湖) 寫入此表格所需的最低協定作者版本。
Databricks 建議不要手動設定此屬性。
請參閱 Delta Lake 功能相容性和通訊協定
資料類型:Int
預設:2
parquet.compression.codec 表格的壓縮編解碼器。
有效值:ZSTD、、SNAPPYGZIPLZ4BROTLI 、(支援依格式而異)
此特性確保所有未來對資料表的寫入皆使用所選編解碼器,覆蓋叢集或會話預設(spark.sql.parquet.compression.codec)。 然而,一次性的 DataFrame .write.option("compression", "...") 設定仍會優先。 可在 Databricks 執行環境 16.0 及更新版本中取得。 請注意,現有檔案不會自動重寫。 若要以您所選格式重新壓縮現有資料,請使用 OPTIMIZE table_name FULL
資料類型:String
預設:ZSTD
parquet.format.version (僅限三角洲湖) 用於撰寫資料檔案的 Parquet 格式版本。 設定此功能以 2.12.0 啟用進階編碼、v2 資料頁標頭及 INT64 時間戳,進而提升查詢效能並減少儲存空間。
有效的值為 1.0.02.12.0,對應 Apache Parquet 格式的釋出。
此屬性可設定在三角洲湖與阿帕奇冰山表上。 部分 OSS Iceberg 讀取器可能不支援 Parquet v2 編碼。 請參閱限制
參見 Parquet v2
資料類型:String
預設:1.0.0
randomizeFilePrefixes true 產生一個隨機的檔案路徑前綴,取代分割區資訊。
資料類型:Boolean
預設:false
randomPrefixLength randomizeFilePrefixes 時,隨機前綴要產生的字元數為 true
資料類型:Int
預設:2
setTransactionRetentionDuration 新快照保留交易識別碼(例如 SetTransactions)的最短持續時間。 新的快照會過期,且忽略超過或等於此屬性所指定期間的交易識別碼。 SetTransaction識別碼用於使寫入操作具有冪等性。 詳情請參見冪等元表格寫入的用途foreachBatch
資料類型:CalendarInterval
預設值:(無)
targetFileSize 檔案微調的目標大小,以位元組或更高單位表示。 例如, 104857600 (位元元組)或 100mb
請參見 控制資料檔案大小
資料類型:String
預設值:(無)
universalFormat.enabledFormats (僅限三角洲湖) 一個逗號分隔的格式清單,供外部用戶端讀取 Delta Lake 表格(UniForm)。 設定為 iceberg 產生 Iceberg 元資料。 設定 iceberg 需要 enableIcebergCompatV2 = true
請參閱 使用 Iceberg 用戶端讀取 Delta Lake 資料表
資料類型:String
預設值:(無)