saundy 发表于 2018-10-31 13:40:30

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]
查看完整版本: hadoop Partitioner 分区