緊湊的數據文件與優化三角洲湖
看到優化.
Databricks上的Delta Lake可以提高從表讀取查詢的速度。提高這個速度的一種方法是將小文件合並成大文件。
語法的例子
方法觸發壓縮優化
命令:
優化δ.' /數據/事件`
從delta.tables進口*deltaTable=DeltaTable.forPath(火花,“/數據/事件”)deltaTable.優化().executeCompaction()
進口io.δ.表._瓦爾deltaTable=DeltaTable.forPath(火花,“/數據/事件”)deltaTable.優化().executeCompaction()
或者,交替:
優化事件
從delta.tables進口*deltaTable=DeltaTable.forName(火花,“事件”)deltaTable.優化().executeCompaction()
進口io.δ.表._瓦爾deltaTable=DeltaTable.forName(火花,“事件”)deltaTable.優化().executeCompaction()
如果您有大量數據,並且隻想優化其中的一個子集,您可以使用指定一個可選的分區謂詞在哪裏
:
優化事件在哪裏日期> =“2022-11-18”
從delta.tables進口*deltaTable=DeltaTable.forName(火花,“事件”)deltaTable.優化().在哪裏(“日期= 2021-11-18”).executeCompaction()
進口io.δ.表._瓦爾deltaTable=DeltaTable.forName(火花,“事件”)deltaTable.優化().在哪裏(“日期= 2021-11-18”).executeCompaction()
請注意
裝箱優化是冪等,這意味著如果在同一數據集上運行兩次,第二次運行沒有影響。
打包的目的是根據數據文件在磁盤上的大小產生均衡的數據文件,而不一定是每個文件的元組數量。然而,這兩項指標通常是相關的。
Python和Scala api用於執行
優化
操作可從Databricks Runtime 11.0及以上版本獲得。
Delta表的讀取器使用快照隔離,這意味著當優化
從事務日誌中刪除不必要的文件。優化
不對表進行與數據相關的更改,因此在優化
結果是一樣的。執行優化
在作為流源的表上,不會影響將此表作為源的任何當前或未來流。優化
返回操作刪除的文件和添加的文件的文件統計信息(最小值、最大值、總數等)。優化統計信息還包含z - ordered統計信息、優化的批數量和分區。
也可以自動壓縮小文件使用自動優化Databricks.