MapReduce自定义Partitioner
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                MapReduce自定义Partitioner
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                Shuffle過程是會按照Map中輸出的key,把數據默認分到一個分區中,那么默認的是如何實現的?
 
 HashPartitioner是Partitioner默認的分區規則,其中numReduceTasks就是指定的Reducer的個數,決定了Reducer作業輸出文件的個數。
自定義Partitioner
package com.imooc.bigdata.hadoop.mr.access;import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Partitioner;/*** MapReduce自定義分區規則*/ public class AccessPartition extends Partitioner<Text, Access> {/*** @param phone 手機號* @param access* @param numPartitions* @return*/@Overridepublic int getPartition(Text phone, Access access, int numPartitions) {if (phone.toString().startsWith("13")) {return 0;} else if (phone.toString().startsWith("15")) {return 1;} else {return 2;}} }在main方法中配置:
// 設置自定義分區規則job.setPartitionerClass(AccessPartition.class);// 設置reduce個數job.setNumReduceTasks(3);這樣就將結果輸出到不同的文件中去了。
總結
以上是生活随笔為你收集整理的MapReduce自定义Partitioner的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: Map端的聚合操作Combiner
 - 下一篇: MapReduce读取本地文件,而不是H