1. 程式人生 > >Maven工程的MapReduce程式3---實現統計各部門員工薪水總和功能(優化)

Maven工程的MapReduce程式3---實現統計各部門員工薪水總和功能(優化)

本文在實現統計各部門員工薪水總和功能的基礎上進行,還沒實現的話請參考:實現統計各部門員工薪水總和功能

優化專案:

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步驟一句程式碼。