HashPartitioner<Text,Text> hash=new HashPartitioner<Text,Text>();
@Override
public int getPartition(CompositeKeyClass keyClass, Text valClass, int numOfPartition) {
// TODO Auto-generated method stub
try {
String[] type=valClass.toString().split(",");
if(type[0].equals("Mapper1")) {
return (hash.getPartition(keyClass.getFirst(), valClass, numOfPartition))%numOfPartition;
} else {
return (hash.getPartition(keyClass.getFirst(), valClass, numOfPartition))%numOfPartition;
}
}
}
我在Partitioner类中使用上面的代码来获取我的自定义类的键。一切正常但我想要的是具有文本&#34; Mapper1&#34;发送到第一个减速机,另一个发送到第二个。我怎样才能做到这一点?我已将job.numOfReduceTaks
设为2.请帮忙!
答案 0 :(得分:2)
这是一个静态决定权吗?
试试这个:
if (type[0].equals("Mapper1")) {
return 0;
} else {
return 1;
}
是的,在驱动程序中,您需要将job.numOfReduceTaks
设置为2.您做得对。