如果是简单的mapreduce工作,请说wordcount。输出结果排序,是否有任何方式订单将反向出现(以Z开头的单词)或任何其他自定义顺序。
答案 0 :(得分:0)
看看Koushik,
你可以做得很好,但你需要自定义。为了自定义Key,您需要实现WritableComparable或扩展WritableComparator类,以便分别实现compareTo()或compare()方法。每种方法都有自己的优点和缺点,超出了你的问题,所以我不打算这样做。
来到你的问题。
记住序列化/ Desirialization中的效率考虑因素往往会导致网络开销,我将实现明确排序的compare()方法输出键值按降序排列。以下是您可能希望通过的方法定义
public static class DescendingKey extends WritableComparator {
protected DescendingKey() {
super(Text.class, true);
}
@SuppressWarnings("rawtypes")
@Override
public int compare(WritableComparable w1, WritableComparable w2) {
LongWritable key1 = (LongWritable) w1;
LongWritable key2 = (LongWritable) w2;
return -1 * key1.compareTo(key2);
}
}
这里看看以下'返回'声明
return -1 * key1.compareTo(key2);
-1 是唯一一个令牌或说操作数,它实际上有助于将键按降序排序。如果将-1更改为+1,则反向似乎发生,即整个数据按照ascneding顺序排序。如果您觉得答案令人怀疑,请回复我。
谢谢:)
答案 1 :(得分:0)
您可以扩展Text Class并覆盖compare方法。
public class NewText extends Text implements Writable,WritableComparable<BinaryComparable> {
@Override
public int compareTo(BinaryComparable other) {
return -1 * super.compareTo(other); //Return inverse value
}
}