hadoop java按降序进行二次排序失败

rt4zxlrg  于 2021-06-02  发布在  Hadoop
关注(0)|答案(0)|浏览(224)

我正在尝试对mr作业的输出按降序进行二次排序,该作业生成一个包含documentid和编辑时间的文件:

123454 22
212234 20
223434 19
....

我的第一个Map器:

...
_key.set(split_line[1]); //set as key the Article_ID
_value.set(1); // .. 1  
...

我的第一个减速机:

....
for (Iterator<IntWritable> it = values.iterator(); it.hasNext();)
      sum += it.next().get(); //sum  each values    

_value.set(sum);  //set sum
context.write(key, _value);
....

我的第二个Map器:

String[] splits = value.toString().trim().split("\\s+"); //split 

context.write(new LongWritable(Long.parseLong(splits[1])),new Text(splits[0]));

我的第二个减速机:

for (Text val : values) {
            context.write(val, key);
        }

最后是比较器类:

.....
 LongWritable k1 = (LongWritable) o1;
 LongWritable k2 = (LongWritable) o2;
 int cmp = k1.compareTo(k2);

 return -1 * cmp;
 ....

通过使用-1,它应该根据编辑次数按降序生成结果,但它会按升序返回结果。。。任何想法都是非常受欢迎的。。。。谢谢!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题