我正在运行一个带有5个执行程序的Spark应用程序,每个执行程序有5个核心。 但是,我注意到只有一个执行程序完成大部分工作(即大部分任务都是在那里完成的)。我正在运行的作业是高度并行的(20个分区或更高)。你怎么解释这种行为?
即使我减少了每个执行程序的核心数量,也会导致同时在该单个执行程序上运行较少的任务。 我应该限制每个执行程序的内存,以便使用更多的执行程序(以防整个数据适合单个执行程序)?
答案 0 :(得分:0)
为了将来面临这个问题的人们加上我的两分钱。这种问题通常是由于RDD / Dataframe的分区大小偏差造成的。要调试问题,您可以检查RDD的分区大小,以确定是否存在任何异常值。如果有一个,你可以看到那个大分区中的元素,以了解正在发生的事情。
this stackoverflow question中详细讨论了类似的问题。