在相同配置下执行 Spark 应用程序时,任务数、阶段数和作业数是否不同?

Does the number of tasks, stages and jobs vary when executing a Spark application under the same configuration?

我目前正在集群中执行 K-Means 算法。

在相同配置(相同数量的执行程序、RAM、迭代、数据集)下连续执行之间,任务、作业和阶段的数量可能会有很大差异。超过 10 次执行任务的数量达到了大约 500 个任务的标准偏差。

这正常吗?同样的配置下DAG不应该是一样的吗?

我是 运行 使用 Scala 实现 K-Means 的 Spark。

这是完全正常的行为。

K-Means收敛所需的迭代次数取决于质心的初始选择,并且该过程是完全(随机初始化模式)或部分(K-Means || 初始化模式)随机的。

由于每次迭代都会触发一个作业(并创建一个单独的 DAG),因此阶段数和任务数与满足收敛标准之前执行的迭代数成正比。