我正在运行一项99%完成的火花工作。最后1%需要很长时间,所以我检查了工作跟踪器。如截图所示,我们可以看到一些执行程序仍然有几个活动任务,而一些执行任务有0个任务。为什么Spark没有重新分配任务?
另外,对于花费很长时间的最后1%的工作,主要是由于内存问题,执行器核心数量还是......?有没有办法找出原因?
谢谢!
答案 0 :(得分:0)
进一步扩展@Holden的答案。她是对的,最可能的原因是你正在研究的RDD偏向于分区,这就是为什么你看到最后1%花费了无限长的时间。调试此方法的一种方法是检查每个分区的大小,如果您看到的分区比其他分区大得多,那么您必须平均地重新分区数据。
this stackoverflow question中详细解答了一个非常类似的问题。