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