我正在尝试在MR作业的输出上按降序执行辅助排序,该MR作业生成包含DocumentID的文件及其编辑时间:
123454 22
212234 20
223434 19
....
我的第一个Maper:
...
_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);
....
我的第二张映射器:
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);
}
最后是Comparator类:
.....
LongWritable k1 = (LongWritable) o1;
LongWritable k2 = (LongWritable) o2;
int cmp = k1.compareTo(k2);
return -1 * cmp;
....
通过使用-1,它应该根据编辑的数量按降序生成结果,但它会按升序返回...任何想法都非常受欢迎....谢谢!