2016-02-13 17 views
1

火花独立簇与一个主站和2个工作节点上每个工人4 CPU内核。所有工人共有8个核心。spark.default.parallelism用于并行化RDD默认为2用于火花提交

当运行通过以下火花提交(spark.default.parallelism没有被设置)

val myRDD = sc.parallelize(1 to 100000) 
println("Partititon size - " + myRDD.partitions.size) 
val totl = myRDD.reduce((x, y) => x + y) 
println("Sum - " + totl) 

它返回分区大小值2。

当使用火花壳通过连接到火花独立簇相同的代码返回正确的分区大小8.

什么可以原因?

谢谢。

回答

2

spark.default.parallelism默认为所有机器上的所有内核的数量。 parallelize api没有父RDD来确定分区的数量,所以它使用spark.default.parallelism。

当运行火花提交,你可能运行在本地。尝试使用与spark-shell相同的启动配置提交spark-submit。在父RDD

spark.default.parallelism

对于像reduceByKey分布式整理操作和加盟,分区的数量最多:

从文档扯这个。对于像没有父RDDS并行操作,这取决于集群管理器:

本地模式:8

其他:在本地机器上的核心

Mesos细粒度模式的核心数量总数所有执行器节点或2上,取在由相同的加入,reduceByKey,并且当不是由用户设定并行变换返回RDDS分区的较大

默认号码。

+0

是用相同的启动CONFIGS提交它,可以看到在网络用户界面和历史记录服务器的工作..看起来像它已被他人以及HTTP观察://apache-spark-user-list.1001560.n3.nabble .COM /并行化-ON-火花上下文td18327.html#a18332 http://apache-spark-user-list.1001560.n3.nabble.com/default-parallelism-in-trunk-td1100.html#a1148 – Sami

+0

刚刚编辑我的帖子,但它应该默认为执行者的核心总数。 –