reduceByKey 可以接收一個(gè) func 函數(shù)作為參數(shù),這個(gè)函數(shù)會(huì)作用到每個(gè)分區(qū)的數(shù)據(jù)上,即分區(qū)內(nèi)部的數(shù)據(jù)先進(jìn)行一輪計(jì)算,然后才進(jìn)行 shuffle 將數(shù)據(jù)寫入下游分區(qū),再將這個(gè)函數(shù)作用到下游的分區(qū)上,這樣做的目的是減少 shuffle 的數(shù)據(jù)量,減輕負(fù)擔(dān)。
groupByKey 不接收函數(shù),Shuffle 過程所有的數(shù)據(jù)都會(huì)參加,從上游拉去全量數(shù)據(jù)根據(jù) Key 進(jìn)行分組寫入下游分區(qū),這樣會(huì)消耗比較多的資源,數(shù)據(jù)傳輸會(huì)導(dǎo)致任務(wù)處理的延遲。
如果我們想要進(jìn)行分組后進(jìn)行聚合操作,使用 reduceByKey 會(huì)更高效, 因?yàn)閞educeByKey 會(huì)在map階段合并分區(qū)內(nèi)相同的key,而gourpByKey 則不會(huì)合并。
更多關(guān)于大數(shù)據(jù)培訓(xùn)的問題,歡迎咨詢千鋒教育在線名師。千鋒教育擁有多年IT培訓(xùn)服務(wù)經(jīng)驗(yàn),采用全程面授高品質(zhì)、高體驗(yàn)培養(yǎng)模式,擁有國內(nèi)一體化教學(xué)管理及學(xué)員服務(wù),助力更多學(xué)員實(shí)現(xiàn)高薪夢(mèng)想。
注:本文部分文字和圖片來源于網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系刪除。版權(quán)歸原作者所有!