리듀스의 출력이 Text, Text 일 때, 알파벳 역순으로 출력되게 하는 Comparator

2013.02.20 15:27콤퓨타/Hadoop

리듀스의 출력이 Text, Text 일 때, 알파벳 역순으로 출력되게 하는 Comparator

출처 : http://pkghosh.wordpress.com/2011/04/13/map-reduce-secondary-sort-does-it-all/

public static class KeyComprator extends WritableComparator {

02

03 protected KeyComprator() {

04 super(Text.class, true);

05 }

06

07 @Override

08 public int compare(WritableComparable w1, WritableComparable w2) {

09

10//ascending zone and day

11

12Text t1 = (Text) w1;

13 Text t2 = (Text) w2;

14 String[] t1Items = t1.toString().split(":");

15 String[] t2Items = t2.toString().split(":");

16 String t1Base = t1Items[0] + ":" + t1Items[1] + ":";

17 String t2Base = t2Items[0] + ":" + t2Items[1] + ":";

18 int comp = t1Base.compareTo(t2Base);

19

20//descending value

21 if (comp == 0) {

22 comp = t2Items[2].compareTo(t1Items[2]);

23 }

24

25 return comp;

26

27 }

28 }

1 2