Mav*_*ick 8 java hadoop mapreduce
我写了一个自定义分区器.当我有大于1的reduce任务数时,作业失败.这是我得到的例外情况:
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)
Run Code Online (Sandbox Code Playgroud)
我写的代码是
public int getPartition(weburl_compositeKey key, Text value, int numPartitions)
{
return (key.hashCode()) % numPartitions;
}
Run Code Online (Sandbox Code Playgroud)
这个值的key.hashCode()equals -719988079和mod正在返回-1.
感谢您对此的帮助.谢谢.
har*_*pun 21
您的自定义计算的分区号Partitioner必须是非负的.尝试:
public int getPartition(weburl_compositeKey key, Text value, int numPartitions)
{
return (key.hashCode() & Integer.MAX_VALUE) % numPartitions;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5808 次 |
| 最近记录: |