hadoop自定义分区

来源:互联网 发布:淘宝客怎么关闭掉 编辑:程序博客网 时间:2024/06/18 16:29
  1. 实现自定义分区比较简单了,继承Partitioner,实现getPartition()方法就行了,分区是按照key进行的。以wordcount为例。
  2. 输入文本1 hello world hello
    3.输入文本2 hello world world
    4 编写程序,hello 和world各自为一个分区,各自对应一个reduce,对应一个输出文件。
public class MyPatitioner extends Partitioner<Text, LongWritable>{    @Override    public int getPartition(Text key, LongWritable value, int numPartitions) {        // TODO Auto-generated method stub        if (key.toString().equals("hello")) {            return 0;      //从0开始        }else {            return 1;        }    }}

5.运行程序中加入以下两行代码

  job.setPartitionerClass(MyPatitioner.class);  //设置分区类  job.setNumReduceTasks(2);  //设置分区个数

6.运行结果
hello 3
world 3

0 0