gpt4 book ai didi

scala - spark.default.parallelism for Parallelize RDD 默认为 2 for spark submit

转载 作者:行者123 更新时间:2023-12-04 10:15:46 25 4
gpt4 key购买 nike

Spark 独立集群具有一个主节点和 2 个工作节点,每个工作节点上有 4 个 CPU 核心。所有 worker 共有 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)

它返回分区大小的值 2。

当通过连接到 spark 独立集群使用 spark-shell 时,相同的代码返回正确的分区大小 8。

可能是什么原因?

谢谢。

最佳答案

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

运行时 spark-submit ,您可能正在本地运行它。尝试提交您的 spark-submit使用与 spark-shell 相同的启动配置。

从文档中提取:

spark.default.parallelism

对于分布式 shuffle 操作,如 reduceByKeyjoin ,父RDD中最大的分区数。对于没有父 RDD 的并行化等操作,它取决于集群管理器:

Local mode: number of cores on the local machine

Mesos fine grained mode: 8

Others: total number of cores on all executor nodes or 2, whichever is larger



join 之类的转换返回的 RDD 中的默认分区数, reduceByKey ,并在用户未设置时并行化。

关于scala - spark.default.parallelism for Parallelize RDD 默认为 2 for spark submit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35384251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com