Hadoop设计模式–接口类
泛型接口设计
WritableComparator 相信大家都不会陌生,在MapReduce Shuffle中经常会被用到。因此摘自WritableComparator中Hadoop中优秀的设计模式,一方面好记星不如烂笔头,方便自用,一方面分享大家。
public class WritableComparator implements RawComparator, Configurable {
...
/** For backwards compatibility. **/
public static WritableComparator get(Class<? extends WritableComparable> c) {
return get(c, null);
}
/** Get a comparator for a {@link WritableComparable} implementation. */
public static WritableComparator get(
Class<? extends WritableComparable> c, Configuration conf) {
WritableComparator comparator = comparators.get(c);
if (comparator == null) {
// force the static initializers to run
forceInit(c);
// look to see if it is defined now
comparator = comparators.get(c);
// if not, use the generic one
if (comparator == null) {
comparator = new WritableComparator(c, conf, true);
}
}
// Newly passed Configuration objects should be used.
ReflectionUtils.setConf(comparator, conf);
return comparator;
}
...
WritableComparator 提供两种get方法,主要的参数Class< ? extends WritableComparable> c,get方法会对传入的class 进行比较操作
之前写了一半,电脑挂了,后续补