1. 程式人生 > >【圖文詳細 】MapReduce 中的 Partitioner

【圖文詳細 】MapReduce 中的 Partitioner

需求:根據歸屬地輸出流量統計資料結果到不同檔案,以便於在查詢統計結果時可以定位到 省級範圍進行 
 
思路:MapReduce 中會將 map 輸出的 kv 對,按照相同 key 分組,然後分發給不同的 reducetask 預設的分發規則為:根據 key 的 hashcode%reducetask 數來分發,所以:如果要按照我們自 己的需求進行分組,則需要改寫資料分發(分組)元件 Partitioner 自定義一個 CustomPartitioner 繼承抽象類:Partitioner 然後在 job 物件中,設定自定義 partitioner: job.setPartitionerClass(ProvincePartitioner.class) 


 
下面是 MapReduce 程式實現 首先看 Partitioner:

再看 MapReduce 程式 FlowSumProvince: