首先,讓我們先思考一個問題:reduceByKey、foldByKey、aggregateByKey、combineByKey的區別?
解釋: 1.reduceByKey: 相同key的第一個數據不進行任何計算,分區內和分區間計算規則相同
2.foldByKey: 相同key的第一個數據和初始值進行分區內計算,分區內和分區間計算規則相同
3.AggregateByKey:相同key的第一個數據和初始值進行分區內計算,分區內和分區間計算規則可以不相同
4.CombineByKey:當計算時,發現數據結構不滿足要求時,可以讓第一個數據轉換結構。分區內和分區間計算規則不相同
爲了更直白的進行解釋,取出了部分源碼,並做了直白的操作(刪減了一些沒有影響到的源碼)
注意下面源碼只是爲了易懂進行了備註,實際情況需要實際瞭解—>>> 根據上述簡化的源碼可以分析得到,其實這四種聚合算子底層的實現都是combineByKey,只是其中的參數發生了系統的變化,目的是爲了實現多個計算場景