排序顺序
默认由RawComparator 控制
if mapred.output.key.comparator.Class 被设置 / JobConf setOutputKeyComparatorClass 方法
使用这个类的实例作为比较器
else 自定义比较器必须继承WritableComparator , 比较对象必须 是 继承 WritableComparable子类
如果没有自定义的comparator, 使用RawComparator进行反序列化 , 委托给 WritableComparable 子类的 compareTo方法
全局排序
二次排序
Map: Mapper -> [first sort] to generate partition(extends Partitioner<CombinationKey,IntWritable>
job.setPartitionerClass(DefinedPartition.
class
)
) ->
[second sort] for sorting cross-group and in-group data (
job.setSortComparatorClass(DefinedComparator.
class
)
) ->
shuffle
Reduce: [group] ( { [sort1, 1],[sort1,2] } => [sort1,(1,2)] ) (job.setGroupingComparatorClass(DefinedGroupSort.
class
)
) => reduce
实例参考 http://zengzhaozheng.blog.51cto.com/8219051/1379271