【发布时间】:2013-04-17 13:50:07
【问题描述】:
Hadoop中的Sort Comparator和Group Comparator有什么区别?
【问题讨论】:
Hadoop中的Sort Comparator和Group Comparator有什么区别?
【问题讨论】:
要了解 GroupComparator,请参阅我对这个问题的回答 -
What is the use of grouping comparator in hadoop map reduce
SortComparator:用于定义map输出key如何排序
Hadoop - Definitive Guide 一书的节选:
键的排序顺序如下:
如果属性 mapred.output.key.comparator.class 已设置,无论是显式设置还是通过
在 Job 上调用 setSortComparatorClass(),然后使用该类的实例。 (在
旧 API 的等效方法是 setOutputKeyComparatorClass() on JobConf。)
否则,keys 必须是WritableComparable 的子类,并且注册的
使用了键类的比较器。
如果没有注册比较器,则使用 RawComparator 反序列化
字节流被比较成对象并委托给WritableComparable的compareTo()方法。
SortComparator 与 GroupComparator 合二为一:
SortComparator 决定 map 输出键的排序方式,而 GroupComparator 决定 Reducer 中的哪些 map 输出键转到同一个 reduce 方法调用。
【讨论】:
组比较器决定哪些地图输出键将被联合(分组)到一个键中,当然所有值的集合也将被分组。通常它需要第一个键作为摘要收集的唯一键。
SortComparator 决定键在reduce 的输入 中的排序方式。默认情况下,它使用自然排序。
【讨论】: