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类中使用上述代码来获取自定义类的键。所有工作正常,但我想有文本“mapper1”的值发送到第一个减速器,另一个发送到第二个。我怎样才能做到这一点?我已经准备好了 job.numOfReduceTaks
到2。请帮帮我!
1条答案
按热度按时间tp5buhyn1#
这是一个静态的决定,对吗?试试这个:
是的,在驱动程序中你需要设置
job.numOfReduceTaks
到2。你做得对。