Azure Databricks 上的低隨機合併
注意
Databricks Runtime 10.4 lTS 和更新版本和 Databricks Runtime 9.1 LTS 的公開預覽版中正式推出低隨機合併。。 Databricks 建議預覽客戶移轉至 Databricks Runtime 10.4 LTS 或更新版本。
MERGE 命令可用來從 Delta Lake 資料表執行同步更新、插入和刪除。 Azure Databricks 的優化實 MERGE
作可藉由減少隨機作業數目,大幅改善常見工作負載的效能。
Databricks 低隨機合併可藉由以個別、更簡化的處理模式處理未修改的數據列,而不是與修改的數據列一起處理它們,以提供更佳的效能。 因此,隨機數據量會大幅減少,因而提升效能。 低隨機合併也會減少使用者在執行作業之後重新執行 MERGE
OPTIMIZE ZORDER BY 命令的需求。
最佳化之效能
許多 MERGE
工作負載只會更新數據表中相對較少的數據列。 不過,Delta 數據表只能以每個檔案為基礎更新。 MERGE
當命令需要更新或刪除儲存在特定檔案中的少量數據列時,它也必須處理並重寫儲存在相同檔案中的所有剩餘數據列,即使這些數據列未修改也一樣。 低隨機合併可優化未修改數據列的處理。 先前,它們會以與修改的數據列相同的方式來處理,並透過多個隨機階段傳遞它們,以及昂貴的計算。 在低隨機合併中,未修改的數據列會改為處理,而不需要任何隨機顯示、昂貴的處理或其他額外負荷。
優化的數據配置
除了執行速度較快之外,低隨機合併也有利於後續作業。 先前的 MERGE
實作會導致完全變更未修改數據的數據配置,導致後續作業的效能較低。 低隨機合併會嘗試保留未修改記錄的現有數據配置,包括 以最佳方式優化 Z 順序 。 因此,使用低隨機合併,Delta 數據表上的作業效能在執行一或多個 MERGE
命令之後會降低得更慢。
注意
低隨機合併會嘗試保留未修改之現有數據的數據配置。 更新或新插入數據的數據配置可能不是最佳配置,因此可能仍然需要執行 OPTIMIZE
或 OPTIMIZE ZORDER BY 命令。
可用性
Databricks Runtime 10.4 和更新版本預設會啟用低隨機合併。 在先前支援的 Databricks Runtime 版本中,您可以將組態 spark.databricks.delta.merge.enableLowShuffle
設定為 true
來啟用。 此旗標在 Databricks Runtime 10.4 和更新版本沒有作用。