我有一个spark应用程序,它从csv文件加载数据,调用Drools引擎,使用flatmap并将结果保存到输出文件(.csv)

以下是两个测试用例:

1)当我运行此应用程序时, 2 Worker nodes 具有相同的配置(8个核心)应用程序需要 5.2 minutes 来完成:

  • 执行人数:133

  • 核心总数:16

  • 已用内存:2GB(每个执行程序1GB)

  • 可用内存:30GB

2)当我运行此应用程序时, 3 Worker nodes 具有相同的配置(8个核心)应用程序需要 7.6 minutes 来完成:

  • 执行人数:266

  • 核心总数:24

  • 已用内存:3GB(每个执行程序1GB)

  • 可用内存:45GB

Expected result

添加一个具有相同配置的工作节点后,应该花费更少的时间 .

Actual Result

添加一个具有相同配置的工作节点后,需要更多时间 .

我在 standalone 模式下使用 spark-submit 命令运行应用程序 .

在这里,我想了解为什么增加工作节点不会提高性能,这是不是正确的期望?

EDIT

在查看了stackoverflow上的其他类似问题之后,我尝试使用 spark.dynamicAllocation.enabled=true 运行应用程序,但是它进一步降低了性能 .