解释 Spark Stage 输出日志

Interpretting Spark Stage Output Log

当 运行 AWS 集群上的 spark 作业时,我相信我已经正确更改了我的代码以分发数据和我正在使用的算法的工作。但是输出看起来像这样:

[Stage 3:>                                                       (0 + 2) / 1000]
[Stage 3:>                                                       (1 + 2) / 1000]
[Stage 3:>                                                       (2 + 2) / 1000]
[Stage 3:>                                                       (3 + 2) / 1000]
[Stage 3:>                                                       (4 + 2) / 1000]
[Stage 3:>                                                       (5 + 2) / 1000]
[Stage 3:>                                                       (6 + 2) / 1000]
[Stage 3:>                                                       (7 + 2) / 1000]
[Stage 3:>                                                       (8 + 2) / 1000]
[Stage 3:>                                                       (9 + 2) / 1000]
[Stage 3:>                                                      (10 + 2) / 1000]
[Stage 3:>                                                      (11 + 2) / 1000]
[Stage 3:>                                                      (12 + 2) / 1000]
[Stage 3:>                                                      (13 + 2) / 1000]
[Stage 3:>                                                      (14 + 2) / 1000]
[Stage 3:>                                                      (15 + 2) / 1000]
[Stage 3:>                                                      (16 + 2) / 1000]

我将 0 + 2 / 1000 解释为只有一个两核处理器一次执行 1000 个任务之一是否正确?有 5 个节点(10 个处理器)为什么我看不到 0 + 10 / 1000?

总共有 1000 个任务需要完成。 2 个核心被用来完成 1000 个任务。我不确定您的设置(并且从未使用过 AWS 集群),但我希望您检查 spark 配置中的 spark.cores.max。这指定了要在所有执行程序中使用的最大内核数。如果您可以显示作业 spark UI

的 Executors 选项卡的内容,这也会很有用

这看起来更像我想要的输出:

[Stage 2:=======>                                             (143 + 20) / 1000]
[Stage 2:=========>                                           (188 + 20) / 1000]
[Stage 2:===========>                                         (225 + 20) / 1000]
[Stage 2:==============>                                      (277 + 20) / 1000]
[Stage 2:=================>                                   (326 + 20) / 1000]
[Stage 2:==================>                                  (354 + 20) / 1000]
[Stage 2:=====================>                               (405 + 20) / 1000]
[Stage 2:========================>                            (464 + 21) / 1000]
[Stage 2:===========================>                         (526 + 20) / 1000]
[Stage 2:===============================>                     (588 + 20) / 1000]
[Stage 2:=================================>                   (633 + 20) / 1000]
[Stage 2:====================================>                (687 + 20) / 1000]
[Stage 2:=======================================>             (752 + 20) / 1000]
[Stage 2:===========================================>         (824 + 20) / 1000]

在 AWS EMR 中,确保将 --executor-cores 选项设置为您正在使用的节点数,如下所示: