我正在通过spark-submit在Mesos集群上的Spark 2.2上运行我的作业。我声明:
所以我在驱动程序上有20个内核,在4个执行程序上各有5个内核。
通常,例如当我查看舞台进度条时
[Stage 12:================================> (86 + 20) / 100]
表示完成的任务数(86),正在运行的任务数(20)和任务总数(100)。同样,大多数情况下,正在运行的任务数不会超过total-executor-cores
中指定的值,因此在这种情况下为20。
但是现在我有一份工作,看到这样的内容
[Stage 22:================================> (355 + 155) / 568]
对于上述相同设置,相同的群集。在SparkUI中,我看到每个执行者有5个内核(按要求),每个执行者一次运行大约30个任务,而通常最多运行5个任务(每个内核1个)。我不明白为什么。
这与我的工作性质有关吗?它涉及将Spark DataFrame强制转换为RDD并在驱动程序上进行收集。示例阶段
val dfOnDriver = df.select("colA", "colB", "colC")
.rdd
.map(...)
.collect
如果您需要有关我的设置的更多信息,请告诉我。