自動優化在磚
自動優化是一個可選的特性,自動緊湊的小文件在個人寫一個三角洲表。自動優化增加延遲開銷寫操作,但加速讀取操作。在下列情況下自動優化尤其有用:
流用例延遲在分鍾的順序是可以接受的
合並成
是首選的方法編寫成三角洲湖嗎創建表作為選擇
或插入成
常用的操作
啟用自動優化
優化寫在磚是默認啟用以下業務運行時9.1 LTS及以上:
合並
更新
與子查詢刪除
與子查詢
其他操作,或磚LTS 7.3運行時,您可以顯式地啟用優化寫和汽車壓實使用下列方法之一:
新表:設置表的屬性
delta.autoOptimize.optimizeWrite=真正的
和delta.autoOptimize.autoCompact=真正的
在創建表
命令。創建表學生(idINT,的名字字符串,年齡INT)TBLPROPERTIES(δ。autoOptimize。optimizeWrite=真正的,δ。autoOptimize。autoCompact=真正的)
現有表:設置表的屬性
delta.autoOptimize.optimizeWrite=真正的
和delta.autoOptimize.autoCompact=真正的
在改變表
命令。改變表(table_name|δ。' <表- - - - - -路徑> ']集TBLPROPERTIES(δ。autoOptimize。optimizeWrite=真正的,δ。autoOptimize。autoCompact=真正的)
所有新表:
集火花。磚。δ。屬性。違約。autoOptimize。optimizeWrite=真正的;集火花。磚。δ。屬性。違約。autoOptimize。autoCompact=真正的;
在磚運行時的10.1及以上,表屬性delta.autoOptimize.autoCompact
還接受的價值觀汽車
和遺產
除了真正的
和假
。當設置為汽車
(推薦),磚曲調的目標文件大小要適當的用例。當設置為遺產
或真正的
、自動壓實使用128 MB作為目標文件大小。
此外,您可以啟用和禁用這兩個特性引發會話配置:
spark.databricks.delta.optimizeWrite.enabled
spark.databricks.delta.autoCompact.enabled
會話配置優先於表屬性允許您更好地控製在選擇或退出這些特性。
當選擇退出
本節提供指導時選擇退出自動優化功能。
當選擇在優化寫道
優化寫道旨在最大化吞吐量的數據寫入到存儲服務。這可以通過減少寫入文件的數量,在不犧牲太多的並行性。
優化中需要根據數據的洗牌的分區結構目標表。這自然洗牌帶來額外成本。然而,在寫吞吐量增長可能償還洗牌的成本。如果不是,吞吐量增長時查詢數據仍然應該使這個特性值得的。
優化的關鍵部分是一種自適應調整寫道。如果你有一個流攝取用例和輸入數據率隨時間的變化,自適應洗牌將相應地調整自己在micro-batches傳入的數據速率。如果你有代碼片段合並(n)
或重新分區(n)
之前你寫你的流,您可以刪除這些行。
當選擇自動壓實
汽車壓實後發生寫入表已成功同步並運行在集群上執行寫入。這意味著如果你有代碼模式,你寫信給三角洲湖,然後立即打電話優化
,你可以刪除優化
如果你讓汽車壓實。
汽車壓實使用不同的啟發式優化
。自同步運行後寫,我們已經調整了汽車壓實運行具有以下屬性:
磚不支持z值與汽車壓實z值是更昂貴的比壓實。
汽車壓實生成更小的文件(128 MB)
優化
(1 GB)。汽車壓實貪婪地選擇一組有限的分區,最好利用壓實。選擇分區的數量將取決於集群上推出的大小。如果您的集群有更多cpu,分區可以優化。
控製輸出文件的大小,設置火花配置
spark.databricks.delta.autoCompact.maxFileSize
。默認值是134217728
,大小設置為128 MB。指定值104857600
將文件大小設置為100 mb。
示例工作流:流攝取與並發刪除或更新
此工作流假設您有一個集群運行一個24/7攝取數據流工作,和一個集群上運行一個小時,每天,或臨時的基礎上刪除或更新一批記錄。這個用例,磚建議你:
在表級別上啟用優化寫道
改變表<table_name|δ。”table_path' >集TBLPROPERTIES(δ。autoOptimize。optimizeWrite=真正的)
這將確保所寫的文件流的數量和最佳大小的刪除和更新工作。
讓汽車壓實在會話級別使用以下設置執行刪除或更新的工作。
火花。sql(“設置spark.databricks.delta.autoCompact.enabled = true”)
這允許跨表壓縮文件。因為它發生刪除或更新後,你減輕事務衝突的風險。
常見問題(FAQ)
自動優化z順序文件嗎?
汽車隻在小文件優化執行壓實。它不z值文件。
自動優化腐敗的z值的文件嗎?
自動優化z值忽略了文件。它隻有契約新文件。
如果我有汽車優化使我流的表上,和一個並發事務衝突與優化,將我的工作失敗?
不。事務衝突,導致汽車優化失敗忽視,和流將繼續正常運行。
我需要安排嗎優化
如果啟用了自動優化工作在我的桌子上嗎?
對於大小大於10 TB的表,我們建議您保留優化
運行在一個時間表進一步鞏固文件,減少你的三角洲的元數據表。由於汽車優化不支持z值,您仍然應該安排優化…ZORDER通過
定期的工作運行。
我有很多小文件。為什麼汽車優化不壓實他們嗎?
默認情況下,自動優化不開始壓實,直到找到50多個小文件的目錄。通過設置你可以改變這一行為spark.databricks.delta.autoCompact.minNumFiles
。有許多小文件並不總是一個問題,因為它可以跳過帶來更好的數據,和它可以幫助減少在合並和刪除重寫。然而,有太多的小文件可能是一個信號,表明你的數據分區。