gpt4 book ai didi

scala - Spark 执行并行度不够的任务

转载 作者:行者123 更新时间:2023-12-04 14:27:50 24 4
gpt4 key购买 nike

我是 Spark 的初学者,我对 Spark 的行为有点困惑。

我正在 Scala 中开发一种算法,在这种方法中,我创建了一个 RDD,其中包含用户以这种方式指定的多个分区:

val fichero = sc.textFile(file, numPartitions)

我正在一个有 12 个工作线程和 216 个可用核心(每个节点 18 个)的集群下开发。但是当我转到 Spark UI 调试应用程序时,我看到了给定阶段的以下事件时间线:

Spark Event TimeLine of a stage

抱歉图片质量不好,但我必须把变焦调低很多。在这个执行中,有 128 个分区。但是,从图中可以看出,整个 RDD 仅在十二个可用执行器中的两个中执行,因此某些任务是按顺序执行的,我不希望出现这种行为。

所以问题是:这里发生了什么?我可以使用所有 worker 来并行执行每个任务吗?我看到了选项:

spark.default.parallelism

但是这个选项在选择要使用的分区数时被修改了。我正在使用 spark-submit 脚本的默认参数启动应用程序。

最佳答案

您应该将 --num-executors 设置为更大的数字(默认为 2),您还应该查看 --executor-cores 默认为 1 .尝试例如--num-executors 128

确保您的分区数量是“执行程序的数量乘以每个执行程序的内核数量”的倍数(我通常使用 2 或 4,具体取决于所需的资源)。

请参阅 spark-submit --help 并进一步阅读,我建议您看一下这个(尤其是“调整并行性”):http://blog.cloudera.com/blog/2015/03/how-to-tune-your-apache-spark-jobs-part-2/

关于scala - Spark 执行并行度不够的任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41848684/

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