Maven工程的MapReduce程式3---實現統計各部門員工薪水總和功能(優化)
阿新 • • 發佈:2018-12-21
本文在實現統計各部門員工薪水總和功能的基礎上進行,還沒實現的話請參考:實現統計各部門員工薪水總和功能
優化專案:
1.使用序列化
2.實現分割槽Patitioner
3.Map使用Combiner
使用序列化
序列化與反序列化:
序列化是指將Java物件轉換為二進位制串的過程,方便網路傳輸;
反序列化是指將二進位制串轉換為Java物件的過程。
MapReduce程式設計模型及程式設計思路:
實現分割槽Patitioner
本案例是對使用序列化案例的優化:可指定輸出檔案的個數,實現結果分割槽存放。
MapReduce預設只有一個Reduce輸出檔案 例如:part-r-00000。
分割槽Partitioner可輸出多個Reduce,並有多個不同的輸出檔案 例如:part-r-00000 , part-r-00001, part-r-00002。
MapReduce程式設計模型及程式設計思路:
Map使用Combiner
使用Combine是指在Map輸出時使用一次Reduce進行合併中間結果,可以減少Shuffle網路傳輸次數,提高效率。但注意有些場合不能使用Combiner,例如求平均值時。
MapReduce程式設計模型及程式設計思路:
使用Combine很簡單,僅僅只需要在Main類中新增,如上圖2.1步驟一句程式碼。