在Spark的分布附带的SparkPi示例中,RDD上的reduce
是并行执行的(每个切片计算其总数),还是不行?
val count: Int = spark.sparkContext.parallelize(1 until n, slices).map { i =>
val x = random * 2 - 1
val y = random * 2 - 1
if (x*x + y*y < 1) 1 else 0
}.reduce(_ + _)
答案 0 :(得分:2)
是的,确实如此。
默认情况下,此示例将在2个切片上运行。因此,您的收藏将分为两部分。然后,Spark将并行地对每个分区执行map
转换和reduce
操作。最后,Spark会将各个结果合并为最终值。
如果使用默认配置执行示例,则可以在控制台输出中观察2个任务。