大数据全系列 教程
1869个小节阅读:467.7k
目录
408考研
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
###5.5.3 分组比较器
ReduceTask类的run方法:
xxxxxxxxxx
//获取分组比较器
RawComparator comparator = job.getOutputValueGroupingComparator();
getOutputValueGroupingComparator():
xxxxxxxxxx
public RawComparator getOutputValueGroupingComparator() {
//首先读取自定义的分组比较器
Class<? extends RawComparator> theClass = getClass(
JobContext.GROUP_COMPARATOR_CLASS, null, RawComparator.class);
if (theClass == null) {
//如果没有定义分组比较器,获取比起器
return getOutputKeyComparator();
}
return ReflectionUtils.newInstance(theClass, this);
}
先获取指定的排序比较器,如果没有自定义排序比较器,则获取key对应类中注册的比较器。
xxxxxxxxxx
public RawComparator getOutputKeyComparator() {
Class<? extends RawComparator> theClass = getClass(
JobContext.KEY_COMPARATOR, null, RawComparator.class);
if (theClass != null)
return ReflectionUtils.newInstance(theClass, this);
return WritableComparator.get(getMapOutputKeyClass().asSubclass(WritableComparable.class), this);
}