MapReduce自定义二次排序流程
每一條記錄開始是進(jìn)入到map函數(shù)進(jìn)行處理,處理完了之后立馬就入自定義分區(qū)函數(shù)中對其進(jìn)行分區(qū),當(dāng)所有輸入數(shù)據(jù)經(jīng)過map函數(shù)和分區(qū)函數(shù)處理完之后,就調(diào)用自定義二次排序函數(shù)對其進(jìn)行排序。
MapReduce處理數(shù)據(jù)的大概簡單流程:首先,MapReduce框架通過getSplit方法實(shí)現(xiàn)對原始文件的切片之后,每一個(gè)切片對應(yīng)著一個(gè)map task,inputSplit輸入到Map函數(shù)進(jìn)行處理,中間結(jié)果經(jīng)過環(huán)形緩沖區(qū)的 排序,然后分區(qū)、自定義二次排序(如果有的話)和合并,再通過shuffle操作將數(shù)據(jù)傳輸?shù)絩educe task端,reduce端也存在著緩沖區(qū),數(shù)據(jù)也會在緩沖區(qū)和磁盤中進(jìn)行合并排序等操作,然后對數(shù)據(jù)按照Key值進(jìn)行分組,然后沒處理完一個(gè)分組之后就 會去調(diào)用一次reduce函數(shù),最終輸出結(jié)果。
?
?
自定義比較器決定了我們二次排序的結(jié)果。自定義比較器需要繼承WritableComparator類,并且重寫compare方法實(shí)現(xiàn)自己的比較策略。
轉(zhuǎn)載于:https://www.cnblogs.com/Mandylover/p/5229666.html
總結(jié)
以上是生活随笔為你收集整理的MapReduce自定义二次排序流程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 观感2
- 下一篇: 31.绿豆蛙的归宿(拓扑排序)