我正在编写自己的自定义分区器(旧api),下面是我扩展分区器类的代码:
public static class WordPairPartitioner extends Partitioner<WordPair,IntWritable> {
@Override
public int getPartition(WordPair wordPair, IntWritable intWritable, int numPartitions) {
return wordPair.getWord().hashCode() % numPartitions;
}
}
设置jobconf:
conf.setPartitionerClass(WordPairPartitioner.class);
wordpair类包含:
私密文字;
私信邻居;
问题:
1我得到错误:“实际参数类(wordpairpartitioner)无法转换为类(?extends partitioner)。
2这是编写自定义分区器的正确方法还是我也需要重写其他一些功能?
2条答案
按热度按时间xdyibdwo1#
除了amar的答案之外,您还应该处理哈希代码按位屏蔽返回负数的可能性:
anauzrmj2#
我相信你混淆了旧的api(来自
org.apache.hadoop.mapred.*
)和新的api(来自org.apache.hadoop.mapreduce.*
)使用旧api,您可以执行以下操作: