可以在ShuffleDependency上设置两个选项/属性mapSideCombine
和keyOrdering
。
我注意到reduceByKey和sortByKey只为每个方法设置了这两个属性中的一个,
我会问是否可以将mapSideCombine
设置为true,并为同一个ShuffleDependency设置keyOrdering
的Ordering对象。如果是这样,有人可以举个例子吗?
我这么问,因为在SortShuffleWriter#write方法中,有以下代码:
sorter = if (dep.mapSideCombine) {
require(dep.aggregator.isDefined, "Map-side combine without Aggregator specified!")
new ExternalSorter[K, V, C](
context, dep.aggregator, Some(dep.partitioner), dep.keyOrdering, dep.serializer)
}
此处,如果dep.mapSideCombine
为真,并且dep.keyOrdering
只能为无,我们可以向dep.keyOrdering
构造函数提供None而不是ExternalSorter
吗?