使用 SQL 視窗函數而非 join 和 groupBy - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 SQL 視窗函數而非 join 和 groupBy

視窗函數 (Spark 文件) 會在稱為視窗的一組資料列上執行計算,以某種方式與目前的記錄相關。例如,它們可以位於與目前資料列相同的分割區或影格中。視窗函數內建於 Spark 中,類似於彙總函數。彙總函數,例如 SUMMAX在一組資料列上操作,並計算每個群組的單一傳回值。視窗函數適用於處理任務,例如根據目前資料列的相對位置計算移動平均值或存取資料列的值。

Spark groupBy 函數會將資料收集到群組中,並對分組的資料執行彙總函數。當您使用 時groupBy, 會先Spark部分彙總資料,然後隨機播放減少的資料集。當您使用視窗函數時,整個資料集會隨機播放。視窗函數可以提供更快的執行時間。

在非常大型的資料集中,如果資料欄的基數很大,則建議使用視窗函數。不過,如果資料欄的基數很小,則資料彙總會很小,而且可以在聯結中廣播彙總結果。