【发布时间】:2017-01-27 18:41:11
【问题描述】:
我是 Spark 的初学者,我对 Spark 的行为有点困惑。
我正在 Scala 中开发一种算法,在这种方法中,我创建了一个 RDD,其中包含用户以这种方式指定的多个分区:
val fichero = sc.textFile(file, numPartitions)
我正在一个有 12 个工作线程和 216 个可用内核(每个节点 18 个)的集群下进行开发。但是当我去 Spark UI 调试应用程序时,我看到了给定阶段的以下事件时间线:
对于图像质量感到抱歉,但我不得不将变焦调低很多。在此执行中,有 128 个分区。但是,从图中可以看出,整个 RDD 仅在 12 个可用的执行程序中执行,因此某些任务是按顺序执行的,我不希望这种行为。
所以问题是:这里发生了什么?我可以使用所有工作人员来并行执行每个任务吗?我看到了这个选项:
spark.default.parallelism
但在选择要使用的分区数时会修改此选项。我正在使用 spark-submit 脚本的默认参数启动应用程序。
【问题讨论】:
-
你为启动设置了多少个执行者?
-
你玩过 spark submit 中的
--num-executors和--executor-cores选项吗? -
在 spark-submit 中将 --num-executors 设置为 12 不起作用。仍在使用 2 个执行器。我在独立模式下使用 Spark。
标签: scala apache-spark parallel-processing rdd