我寫了一個自定義的分區程序。當我有大於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