在自定义键的情况下,如何为自定义分区器设置numreducetask

jobtbby3  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(367)
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。请帮帮我!

tp5buhyn

tp5buhyn1#

这是一个静态的决定,对吗?试试这个:

if (type[0].equals("Mapper1")) {
    return 0;
} else {
    return 1;
}

是的,在驱动程序中你需要设置 job.numOfReduceTaks 到2。你做得对。

相关问题