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

看到優化

Databricks上的Delta Lake可以提高從表讀取查詢的速度。提高這個速度的一種方法是將小文件合並成大文件。

語法的例子

方法觸發壓縮優化命令:

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

或者,交替:

優化事件
delta.tables進口deltaTableDeltaTableforName火花“事件”deltaTable優化()executeCompaction()
進口ioδ_瓦爾deltaTableDeltaTableforName火花“事件”deltaTable優化().executeCompaction()

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

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

請注意

  • 裝箱優化是冪等,這意味著如果在同一數據集上運行兩次,第二次運行沒有影響。

  • 打包的目的是根據數據文件在磁盤上的大小產生均衡的數據文件,而不一定是每個文件的元組數量。然而,這兩項指標通常是相關的。

  • Python和Scala api用於執行優化操作可從Databricks Runtime 11.0及以上版本獲得。

Delta表的讀取器使用快照隔離,這意味著當優化從事務日誌中刪除不必要的文件。優化不對表進行與數據相關的更改,因此在優化結果是一樣的。執行優化在作為流源的表上,不會影響將此表作為源的任何當前或未來流。優化返回操作刪除的文件和添加的文件的文件統計信息(最小值、最大值、總數等)。優化統計信息還包含z - ordered統計信息、優化的批數量和分區。

也可以自動壓縮小文件使用自動優化Databricks

我應該多久跑一次優化?

當你選擇跑步的頻率時優化在美國,性能和成本之間需要權衡。為了獲得更好的最終用戶查詢性能,請運行優化更多。這將導致更高的成本,因為增加了資源使用。為了優化成本,減少運行頻率。

Databricks建議你從跑步開始優化在每天的基礎上(最好是在現貨價格較低的晚上),然後調整頻率,以平衡成本和性能的權衡。

運行的最佳實例類型是什麼優化(箱子包裝和z - order)在?

這兩種操作都是CPU密集型操作,執行大量的Parquet解碼和編碼。

磚建議計算優化實例類型。優化也從附加的ssd中受益。