緊湊的數據文件與優化在三角洲湖

看到優化

三角洲湖磚可以提高閱讀的速度從表查詢。改善這種速度的一個方法是將小文件合並成更大的。

語法的例子

你觸發壓縮通過運行優化命令:

優化δ' /數據/事件
delta.tables進口*deltaTable=DeltaTableforPath(火花,“/數據/事件”)deltaTable優化()executeCompaction()
進口ioδ_瓦爾deltaTable=DeltaTableforPath(火花,“/數據/事件”)deltaTable優化()。executeCompaction()

或者,交替:

優化事件
delta.tables進口*deltaTable=DeltaTableforName(火花,“事件”)deltaTable優化()executeCompaction()
進口ioδ_瓦爾deltaTable=DeltaTableforName(火花,“事件”)deltaTable優化()。executeCompaction()

如果你有一個大的數據量,隻有想優化的一個子集,您可以指定一個可選的分區使用謂詞在哪裏:

優化事件在哪裏日期> =“2022-11-18”
delta.tables進口*deltaTable=DeltaTableforName(火花,“事件”)deltaTable優化()在哪裏(“日期= 2021-11-18”)executeCompaction()
進口ioδ_瓦爾deltaTable=DeltaTableforName(火花,“事件”)deltaTable優化()。在哪裏(“日期= 2021-11-18”)。executeCompaction()

請注意

  • 裝箱優化冪等,也就是說,如果是相同的數據集上運行兩次,第二次運行沒有影響。

  • 裝箱計劃生產均衡數據文件對磁盤上它們的大小,但不一定是元組每個文件的數量。然而,這兩個指標往往是相關的。

  • Python和Scala api執行優化操作可從磚運行時11.0及以上。

三角洲的讀者表使用快照隔離,這意味著他們不中斷時優化從事務日誌刪除不必要的文件。優化沒有相關數據修改表,所以讀之前和之後的一個優化有相同的結果。執行優化桌子上這是一個流源不影響任何當前或未來的流,將此表作為一個源。優化返回文件的統計數據(最小、最大、總,等等)的文件刪除和添加的文件操作。優化數據也包含z值統計,批次的數量,和分區優化。

你也可以緊湊的小文件自動使用汽車壓實。看到汽車壓實對磚三角洲湖

我應該運行多長時間優化嗎?

當你選擇要運行多長時間優化,有一個性能和成本之間的權衡。為了更好的終端用戶查詢性能,運行優化更多。這將導致更高的成本,因為增加的資源使用情況。優化成本,少運行它。

磚建議你開始運行優化每天晚上(最好是當現貨價格低),然後調整頻率來平衡成本和性能的權衡。

什麼是最好的實例類型運行優化(裝箱和z值)?

兩個操作是CPU密集型操作做大量的拚花解碼和編碼。

磚建議計算優化實例類型。優化也得益於ssd。