首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 互联网 >

地图reduce排序中java.io.IOException: Illegal partition for 2 (-1)

2013-10-01 
mapreduce排序中java.io.IOException: Illegal partition for 2 (-1)public static class Partition exten

mapreduce排序中java.io.IOException: Illegal partition for 2 (-1)
public static class Partition extends Partitioner<IntWritable,IntWritable>{@Overridepublic int getPartition(IntWritable key, IntWritable value, int numPartitions) {int Maxnumber = 65223;int bound = Maxnumber/numPartitions+1;int keynumber = key.get();for (int i = 0; i < numPartitions; i++) {if(keynumber<bound*i&&keynumber>=bound*(i-1)){return i-1;}}return -1;}}?原因:

出现错误的原因是在某种情况下getPartition函数返回了-1,Partition是从0开始的,默认返回-1是不正确的。
解决方法:
默认返回0
public static class Partition extends Partitioner<IntWritable,IntWritable>{@Overridepublic int getPartition(IntWritable key, IntWritable value, int numPartitions)  {int Maxnumber = 65223;int bound = Maxnumber/numPartitions+1;int keynumber = key.get();for (int i = 0; i < numPartitions; i++) {if(keynumber<bound*i&&keynumber>=bound*(i-1)){return i-1;}}return 0;}}
?

热点排行