討論Spark中RDD四種轉換聚合算子的區別(源碼角度)

首先,讓我們先思考一個問題:reduceByKey、foldByKey、aggregateByKey、combineByKey的區別?

解釋: 1.reduceByKey: 相同key的第一個數據不進行任何計算,分區內和分區間計算規則相同

2.foldByKey: 相同key的第一個數據和初始值進行分區內計算,分區內和分區間計算規則相同

3.AggregateByKey:相同key的第一個數據和初始值進行分區內計算,分區內和分區間計算規則可以不相同

4.CombineByKey:當計算時,發現數據結構不滿足要求時,可以讓第一個數據轉換結構。分區內和分區間計算規則不相同

爲了更直白的進行解釋,取出了部分源碼,並做了直白的操作(刪減了一些沒有影響到的源碼)

注意下面源碼只是爲了易懂進行了備註,實際情況需要實際瞭解—>>> 在這裏插入圖片描述 在這裏插入圖片描述 在這裏插入圖片描述 在這裏插入圖片描述 根據上述簡化的源碼可以分析得到,其實這四種聚合算子底層的實現都是combineByKey,只是其中的參數發生了系統的變化,目的是爲了實現多個計算場景

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章