hadoop Partitioner 分区
import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Partitioner;
/* 测试 Partitioner 分区
*/
public>
/*
* 接受的两个是应该是输入的 的数据类型 然后根据传进来的 的key 应该有三种结果long right short 然后进行区分输出文件
*/
@Override
public int getPartition(Text key, Text value, int numPartition) {
/*
*numPartition = job.setNumReduceTasks(3); 在运行类设置
*numPartition 分多少个reduce 或者分多少个 文件数量
*如果是伪分布式 出来的文件 也只有一个而已 因为 他无法设置 reduce的数量 要么一个 要么 0个reduce
*但是输出的文件是排序了的
*/
int result = 0;
if(key.equals("long")){
result = 0 % numPartition; //part-r-00000 输出到的文件
} else if (key.equals("short")){
result = 1 % numPartition; //part-r-00001
} else if (key.equals("right")){
result = 2 % numPartition; //part-r-00002
}
return result;
}
}
页:
[1]