Scala Parallelize RDD的spark.default.parallelism对于spark submit默认为2
Spark独立群集,每个工作节点上有一个主节点和两个工作节点以及4个cpu核心。所有工人共有8个核心 通过spark submit运行以下操作时(未设置spark.default.parallelism)Scala Parallelize RDD的spark.default.parallelism对于spark submit默认为2,scala,apache-spark,Scala,Apache Spark,Spark独立群集,每个工作节点上有一个主节点和两个工作节点以及4个cpu核心。所有工人共有8个核心 通过spark submit运行以下操作时(未设置spark.default.parallelism) val myRDD=sc.parallelize(1到100000) println(“分区大小-”+myRDD.partitions.size) val totl=myRDD.reduce((x,y)=>x+y) println(“总和-”+totl) 它返回分区大小的值2 当通过连接sp
val myRDD=sc.parallelize(1到100000)
println(“分区大小-”+myRDD.partitions.size)
val totl=myRDD.reduce((x,y)=>x+y)
println(“总和-”+totl)
它返回分区大小的值2
当通过连接spark standalone cluster使用spark shell时,相同的代码返回正确的分区大小8
原因可能是什么
谢谢
spark.default.parallelism
默认为所有机器上所有内核的数量。ParallelizeAPI没有父RDD来确定分区的数量,因此它使用spark.default.parallelism
运行spark submit
时,您可能正在本地运行它。尝试使用与spark shell相同的启动配置提交您的spark submit
从文档中提取:
spark.default.parallelism
对于分布式洗牌操作,如reduceByKey
和join
,父RDD中的最大分区数。对于无父RDD的并行化等操作,它取决于群集管理器:
本地模式:本地计算机上的磁芯数
细晶粒模式:8
其他:所有executor节点上的内核总数或2个,以较大者为准
RDD中由转换(如
join
,reduceByKey
)返回的默认分区数,如果不是由用户设置,则将其并行化。Yes使用相同的启动配置提交,并且可以在web ui和history server中查看作业。。看起来其他人也注意到了这一点,但它应该默认为执行者的核心总数。