【发布时间】:2013-02-22 19:14:48
【问题描述】:
我已经编写了一个自定义分区器。当我的减少任务数量大于 1 时,作业失败。这是我得到的例外:
java.io.IOException: Illegal partition for weburl_compositeKey@804746b1 (-1)
at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.collect(MapTask.java:930)
at org.apache.hadoop.mapred.MapTask$OldOutputCollector.collect(MapTask.java:499)
我写的代码是
public int getPartition(weburl_compositeKey key, Text value, int numPartitions)
{
return (key.hashCode()) % numPartitions;
}
key.hashCode() 等于 -719988079 并且此值的 mod 返回 -1。
感谢您对此的帮助。谢谢。
【问题讨论】: