我正在计算字数,因此映射器返回键和值对
zz 1
zz 1
b 1
c 1
和我的减速器将它们加在一起
b 1
c 1
zz 2
但是我希望按键按长度排序(递减)
zz 2
b 1
c 1
所以我为字长创建一个比较器
public static class LengthComparator extends WritableComparator {
@Override
@Override
public int compare(WritableComparable a, WritableComparable b) {
String w1 = a.toString();
String w2 = b.toString();
if (w1.length == w2.length) return 0;
return w1.length() > w2.length() ? -1 : 1;
}
}
然后设置
job.setSortComparatorClass(LengthComparator.class);
现在我的输出是这个
zz 2
b 2
所以我尝试这个
public static class LengthComparator extends WritableComparator {
@Override
@Override
public int compare(WritableComparable a, WritableComparable b) {
String w1 = a.toString();
String w2 = b.toString();
return w1.length() > w2.length() ? -1 : 1;
}
}
现在我的输出是
zz 1
zz 1
b 1
c 1
如何使键按键分组,但输出按单词长度排序?