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
所以我应该假设 Shuffle
在 reduceByKey
之前被使用了吗? [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
.
中的一个键
我 运行宁 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
所以我应该假设 Shuffle
在 reduceByKey
之前被使用了吗? [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
.