0
我正在运行一个Spark应用程序,每个执行程序有5个执行程序的5个执行程序。 但是,我注意到只有一个执行者完成大部分工作(即大部分任务都在那里完成)。我正在运行的作业高度平行(20个分区或更大)。你如何解释这种行为?Spark:执行程序的最佳使用
即使我减少了每个执行程序的核心数量,结果也只是同时在该单个执行程序上运行更少的任务。 我应该限制每个执行程序的内存,以便使用更多的执行程序(以防万一整个数据适合单个执行程序)?
它取决于您正在处理的转换和数据集。例如,如果您的数据是(1,2),(2,2),(1,3),(1,9)(1,10),并且您执行了reduceByKey,则您的所有数据使用键'1'遗嘱执行人。 – Knight71
简单的转换和动作像df.map(lambda x:x).count()似乎在同一个执行器上运行。所以,没有真正涉及的关键。 –
一点点的代码片段和示例数据可能会有所帮助。 – Knight71