即使使用指定的范围分区程序,apache-spark中的sortByKey是否会随机播放?

时间:2018-11-09 17:55:14

标签: apache-spark

val vectors = [SOME RDDs]
val clusterised = vectors.groupBy(...)

// Partitioning
val tunedPartitioner = new RangePartitioner(12, clusterised)
val partitionedClusterised = clusterised.partitionBy(tunedPartitioner).persist()

// Calculate the average positions for each cluster
val averagePos = partitionedClusterised.mapValues(averageVectors)
// averagePos: RDD[(index:Int, v:Vector)]

// Update the means
val tempSorted = averagePos.sortByKey().partitionBy(tunedPartitioner).persist()

上面是一些我用来生成(索引,向量)RDD的代码,该代码按索引排序。我试图避免由sortByKey引起的乱序,但是在调试器中,“ tempSorted” RDD仍然是ShuffledRDD。

我了解到先不进行“集群化”分区可能会更有效,因为mapValues转换减小了PairRDD中值的大小(集群化为index,iterator(vectors),而averagePos为index,vector),但我仍然无法理解为什么tempSorted是ShuffledRDD。每个分区都不应该对其中的任何内容进行排序吗?是什么使tempSorted成为ShuffledRDD?

0 个答案:

没有答案