在Apache Spark中,任务随着时间的推移变得更加耗时。
在Apache Spark中,任务随着时间的推移变得更加耗时的原因可能是因为某些节点上的阶段比其他节点更快地完成。根据这一观察,下面是我会尝试的解决方法:
1. 将处理的RDD进行缓存。在不再需要时,不要忘记取消缓存。
2. 检查分区是否均衡,这似乎并不是这种情况(这可以解释为什么某些本地阶段比其他阶段更早完成)。在分布式计算中,拥有均衡的分区是至关重要的。
3. 减少通信成本,即使用较少的工作节点,然后观察结果。当然,这在很大程度上取决于您的应用程序。您可以看到,有时通信成本变得非常高,以至于它们主导了任务的执行时间,因此使用较少的机器可以加快作业的速度。然而,只有在步骤1和步骤2无法解决问题时,我才会尝试这一方法。
这是关键:检查分区是否均衡。谢谢!