本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 SQL 視窗函數而非 join 和 groupBy
視窗函數SUM
或 MAX
,在一組資料列上操作,並計算每個群組的單一傳回值。視窗函數適用於處理任務,例如根據目前資料列的相對位置計算移動平均值或存取資料列的值。
Spark groupBy
函數會將資料收集到群組中,並對分組的資料執行彙總函數。當您使用 時groupBy
, 會先Spark部分彙總資料,然後隨機播放減少的資料集。當您使用視窗函數時,整個資料集會隨機播放。視窗函數可以提供更快的執行時間。
在非常大型的資料集中,如果資料欄的基數很大,則建議使用視窗函數。不過,如果資料欄的基數很小,則資料彙總會很小,而且可以在聯結中廣播彙總結果。