Spark:并行随机播放 = 1

Spark: Shuffle with Parallelism = 1

我 运行宁 Spark 只有一个节点 Parallelism = 1 以便将其性能与单线程应用程序进行比较。我想知道 Spark 是否仍在使用 Shuffle 尽管它没有并行使用 运行。所以如果例如执行以下命令:

val counts = text_file.flatMap(line => line.split(" "))
   .map(word => (word, 1))
   .reduceByKey(_+_)

我从 Spark Interactive Scala 得到以下输出 Shell:

counts: org.apache.spark.rdd.RDD[(String, Int)] = ShuffledRDD[10] 
                                                  at reduceByKey at <console>:41

所以我应该假设 ShufflereduceByKey 之前被使用了吗? [10] 真的有什么意义吗?

I'm wondering if Spark is still using a Shuffle although it does not run in parallel.

是的。值得注意的是,即使是单个核心,分区数量也可能远大于一个。例如,如果 RDD 是使用 SparkContext.textFile 创建的,分区数取决于文件系统块的大小。

So should I assume, that a Shuffle was used before reduceByKey

不,随机播放是 reduceByKey 逻辑的基本组成部分,因此它是在 reduceByKey 期间使用的,而不是之前。稍微简化一下 shuffle 相当于创建一个散列 table。假设只有一个分区,它不执行任何有用的任务但仍然存在。

And does [10] actually has any meaning?

它是给定 RDD 的唯一(在当前 SparkContext 中)ID。例如,如果持久化 RDD,那么您看到的数字应该是 SparkContext.getPersistentRDDs.

中的一个键