一,job.setPartitionerClass(PartitionClass.class);
作用:对key取hash值(或其它处理),进入不同的reduce
二,job.setSortComparatorClass
对进入同一个reduce的 键 或键的部分 进行排序,按照情况需要;
三,job.setGroupingComparatorClass
- 进入同一个reduce的key是按照顺序排好的,该类使得:
- 如果连续(注意,一定连续)的两条或多条记录满足同组(即compare方法返回0)的条件,
- 即使key不相同,他们的value也会进入同一个values,执行一个reduce方法。
- 相反,如果原来key相同,但是并不满足同组的条件,他们的value也不会进入一个valeus。
- 最后返回的key是:满足这些条件的一组key中排在最后的那个。
public class WordCountGroupComparator extends WritableComparator {
// 要在构造函数里显示调用父类构造函数,否则会报空指针异常
public WordCountGroupComparator() {
super(Text.class,null,true);
}
@Override
public int compare(Object a, Object b) {
System.out.println("group comp...");
return 0;
}
@Override
public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2, int l2) {
return 0;
}
}