我写了一个自定义的分区程序。当我有大于1的减少任务数量时,该作业失败。这是我收到的例外:如何解决hadoop中的“非法分区”错误?
java.io.IOException: Illegal partition for [email protected] (-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
。
感谢您对此的帮助。谢谢。
非常感谢。它的工作:) – Maverick 2013-02-22 20:25:20
@SumanBharadwaj不客气!请将答案标记为已接受。谢谢:) – harpun 2013-02-22 20:46:33
这个问题收到3个答案 - 两个正确和一个不正确。太糟糕了,唯一不正确的人得到了最好的分数和接受的答案标记。 – 2015-12-31 09:35:44