Azure Databricks 上的低隨機合併
注意
Databricks Runtime 10.4 lTS 和 更新版本中,以及 Databricks Runtime 9.1 LTS 中公開預覽版 中,低隨機合併 正式推出 (GA)。 Databricks 建議預覽客戶移轉至 Databricks Runtime 10.4 LTS 或更新版本。
MERGE 命令可用來從 Delta Lake 資料表執行同步更新、插入和刪除。 Azure Databricks 具有優化的 MERGE
實作,藉由減少交換操作的數量,大幅改善常見工作負載的效能。
Databricks 低捲動合併能夠通過以個別且更精簡的處理模式來處理未修改的資料行,而不是將它們與修改過的資料行一起處理,從而提供更佳的效能。 因此,重組後的數據量會大幅減少,因而提升效能。 低隨機合併也會減少使用者在執行 OPTIMIZE 作業之後,重新執行 ORDER 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 和更新版本沒有作用。