用自定義元數據豐富Delta Lake表
除了表注釋之外,您還可以使用Delta Lake事務日誌中的字段為單個提交向表或消息添加自定義標記。
設置用戶定義的提交元數據
您可以使用DataFrameWriter選項將用戶定義的字符串指定為這些操作提交的元數據userMetadata
或SparkSession配置spark.databricks.delta.commitInfo.userMetadata
.如果兩者都指定了,則優先選擇該選項。中的用戶定義元數據是可讀的描述曆史操作。
集火花.磚.δ.commitInfo.userMetadata=覆蓋-為-修複-不正確的-數據插入覆蓋默認的.people10m選擇*從更多人
df.寫.格式(“δ”)\.模式(“覆蓋”)\.選項(“userMetadata”,“overwritten-for-fixing-incorrect-data”)\.保存(“/ tmp /δ/ people10m”)
df.寫.格式(“δ”).模式(“覆蓋”).選項(“userMetadata”,“overwritten-for-fixing-incorrect-data”).保存(“/ tmp /δ/ people10m”)
在表屬性中存儲自定義標記
可以使用。將自己的元數據存儲為表屬性TBLPROPERTIES
在創建
而且改變
.然後你就可以顯示
元數據。例如:
改變表格默認的.people10m集TBLPROPERTIES(“部門”=“會計”,“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”,“真正的”)
另請參閱增量表屬性引用.