Sam*_*ami 6 scala apache-spark
带有独立主节点和2个工作节点的Spark独立群集,每个工作节点上有4个cpu核心。所有工人共有8个核心。
通过spark-submit运行以下命令时(未设置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)
Run Code Online (Sandbox Code Playgroud)
返回分区大小的值2。
通过连接到Spark独立集群使用spark-shell时,相同代码返回正确的分区大小8。
可能是什么原因?
谢谢。
spark.default.parallelism默认为所有计算机上所有内核的数量。parallelize api没有父RDD来确定分区数,因此它使用spark.default.parallelism。
运行时spark-submit,您可能正在本地运行它。尝试spark-submit使用与spark-shell相同的启动配置提交。
从文档中拉出:
spark.default.parallelism
Run Code Online (Sandbox Code Playgroud)
对于像reduceByKey和的分布式随机播放操作join,父RDD中的分区数量最多。对于没有父RDD的并行化操作,它取决于集群管理器:
本地模式:本地计算机上的内核数
Mesos细颗粒模式:8
其他:所有执行程序节点上的内核总数或2个,以较大者为准
通过变换返回RDDS分区的默认数量一样join,reduceByKey和并行化时,不能由用户设置。
| 归档时间: |
|
| 查看次数: |
16790 次 |
| 最近记录: |