用自定義元數據豐富Delta Lake表

除了表注釋之外,您還可以使用Delta Lake事務日誌中的字段為單個提交向表或消息添加自定義標記。

設置用戶定義的提交元數據

您可以使用DataFrameWriter選項將用戶定義的字符串指定為這些操作提交的元數據userMetadata或SparkSession配置spark.databricks.delta.commitInfo.userMetadata.如果兩者都指定了,則優先選擇該選項。中的用戶定義元數據是可讀的描述曆史操作。

火花δcommitInfouserMetadata覆蓋--修複-不正確的-數據插入覆蓋默認的people10m選擇更多人
df格式“δ”模式“覆蓋”選項“userMetadata”“overwritten-for-fixing-incorrect-data”保存“/ tmp /δ/ people10m”
df格式“δ”模式“覆蓋”選項“userMetadata”“overwritten-for-fixing-incorrect-data”保存“/ tmp /δ/ people10m”

在表屬性中存儲自定義標記

可以使用。將自己的元數據存儲為表屬性TBLPROPERTIES創建而且改變.然後你就可以顯示元數據。例如:

改變表格默認的people10mTBLPROPERTIES“部門”“會計”“delta.appendOnly”“真正的”);——顯示表的屬性。顯示TBLPROPERTIES默認的people10m——隻顯示'department'表屬性。顯示TBLPROPERTIES默認的people10m“部門”);

TBLPROPERTIES作為Delta表元數據的一部分存儲。你不能定義newTBLPROPERTIES在一個創建語句,如果Delta表已經存在於給定位置。

此外,為了定製行為和性能,Delta Lake支持某些Delta表屬性:

  • 塊刪除和更新Delta表:delta.appendOnly = true

  • 配置時間旅行保留屬性:delta.logRetentionDuration = < interval-string >而且delta.deletedFileRetentionDuration = < interval-string >.詳細信息請參見為時間旅行配置數據保留

  • 配置要收集統計信息的列數:delta.dataSkippingNumIndexedCols = n.此屬性向寫入器指示隻收集第一個屬性的統計信息n表中的列。此外,數據跳過代碼忽略該列索引之外的任何列的統計信息。此屬性僅對寫入的新數據生效。

  • 隨機化文件前綴以避免S3元數據中的熱點:delta.randomizeFilePrefixes = true.對於需要大量(每秒數千個請求)快速讀/寫操作的表,我們強烈建議將一個S3桶專用於一個表(將表定位在桶的根),並啟用隨機化的文件前綴以獲得最佳體驗。

請注意

  • 修改增量表屬性是一個寫操作,會與其他操作衝突並發寫操作,導致他們失敗。Databricks建議隻在表上沒有並發寫操作時修改表屬性。

你也可以設置三角洲。-在使用Spark配置第一次提交到Delta表時使用前綴屬性。例如,使用屬性初始化Delta表delta.appendOnly = true,設置Spark配置spark.databricks.delta.properties.defaults.appendOnly真正的.例如:

火花sql"SET spark. databicks .delta.properties.defaults. appendonly = true"
火花相依“spark.databricks.delta.properties.defaults.appendOnly”“真正的”
火花相依“spark.databricks.delta.properties.defaults.appendOnly”“真正的”

另請參閱增量表屬性引用

探索表元數據

三角洲湖支撐顯示(分區|列)而且描述表格.看到顯示分區顯示列描述表