首先介绍一下需要实现的接口。框架的类图如图所示(今天CSDN抽风,竟然上传不了图片。如果需要实现新的Shuffle机制,那么需要实现这些接口。1.1.1 org.apache.spark.shuffle.ShuffleManagerDriver和每个Executor都会持有一个ShuffleManager,这个ShuffleManager可以通过配置项spark.shuffle.manager指定,并且由SparkEnv创建。Driver中的ShuffleManager负责注册Shuffle的元数据,比如Shuffle ID,map task的数量等。Executor中的ShuffleManager 则负责读和写Shuffle的数据。需要实现的函数及其功能说明:1) 由Driver注册元数据信息defregisterShuffle[K, V, C](shuffleId: Int,numMaps: Int,dependency:ShuffleDependency[K, V, C]): ShuffleHandle一般如果没有特殊的需求,可以使用下面的实现,实际上Hash BasedShuffle 和Sort BasedShuffle都是这么实现的。override def registerShuffle[K, V, C](shuffleId: Int,numMaps: I
...
继续阅读
(62)