【发布时间】:2018-01-06 08:47:18
【问题描述】:
我为 Spark 编写以下代码:
val longList = 1 to 1000000 toList
val numsToAdd = sc.parallelize(longList,30)
val st = System.nanoTime()
println(numsToAdd.reduce((x,y) => x+y))
val et = System.nanoTime()
println("Time spend:"+(et-st))
我使用不同的分区值执行并行化转换。 时间花费如下:
Partitions Time spend
default 97916961
10 111907094
20 141691820
30 158264230
我的理解是,使用 partitions 参数,spark 将数据集划分为多个部分,并对每个部分执行并行操作。所以直观来说,越多分区越快的一定是程序。
但似乎恰恰相反。
我在本地机器上运行我的程序。
分区是否以其他方式工作?
【问题讨论】:
-
您的数据集太小,无法真正利用 Spark 的优势。只要数据适合内存,就不要使用 Spark,而是使用普通的 Scala 集合 API
标签: apache-spark rdd