カスタムパーティショナーを作成しました。削減タスクの数が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()
equals-719988079
であり、この値のmodはを返し-1
ます。
これについてのあなたの助けに感謝します。ありがとう。