レデューサーから次の出力があります
Key Value
1 1998-01-05 45
10 1998-01-09 20
2 1998-01-06 68
3 1998-01-07 85
4 1998-01-08 85
辞書式順序ではこれは正しいですが、自然な順序で並べ替えたいです。
Key Value
1 1998-01-05 45
2 1998-01-06 68
3 1998-01-07 85
4 1998-01-08 85
10 1998-01-09 20
私はこれを達成するためにKeyComparatorを作成しました。以下はコードですが、これでもうまくいきませんでした。
public static class KeyComparator extends WritableComparator {
protected KeyComparator() {
super(IntWritable.class, true);
}
@SuppressWarnings("rawtypes")
public int compare(WritableComparable w1, WritableComparable w2) {
IntWritable t1 = (IntWritable) w1;
IntWritable t2 = (IntWritable) w2;
String t1Items = t1.toString();
String t2Items = t2.toString();
return t1Items.compareTo(t2Items);
}
}
私のマッパー出力はレデューサーと同じ形式ですが、レデューサーは最大値を出力しているだけです。
私は何が欠けていますか