Hadoop中的Sort Comparator和Group Comparator有什么区别?
2 回答
要了解GroupComparator,请参阅我对这个问题的回答 -
SortComparator:用于定义 map 输出键如何排序
Hadoop - 权威指南一书的摘录:
键的排序顺序如下:
如果该属性
mapred.output.key.comparator.class
已设置,无论是显式设置还是通过调用setSortComparatorClass()
Job,都将使用该类的实例。(在旧 API 中,等效方法是setOutputKeyComparatorClass()
onJobConf
。)否则,键必须是 的子类
WritableComparable
,并且使用键类的注册比较器。如果没有注册的比较器,则
RawComparator
使用 a 将被比较的字节流反序列化为对象并委托给WritableComparable
'scompareTo()
方法。
SortComparator 与 GroupComparator 合二为一:
SortComparator
决定 map 输出键的排序方式,同时GroupComparator
决定 Reducer 中的哪些 map 输出键转到同一个 reduce 方法调用。
Group Comparator决定将哪些映射输出键合并(分组)为一个键,当然所有值的集合也将被分组。通常它需要第一个键作为摘要收集的唯一键。
SortComparator决定如何在reduce 的输入中对键进行排序。默认情况下,它使用自然排序。