Spark coalesce 导致内存溢出
Created at 2021-12-11 Updated at 2021-12-11 Category 大数据 views
最近遇到一个问题,执行某个spark脚本的时候,我想要在输出时减少分区数,就使用了coalesce算子,将原本2000的分区减少为200,但是执行过程中发现,分区数并不是和我想象的一样执行到最后一步再开始减少,而是从一开始就只有200个分区,所以就只有200个task,由于task太少导致了内存溢出。
这个问题换成了repartition算子之后解决了,因为repartition会有一个shuffle的过程,shuffle前后是两个stage。而coalesce不会产生shuffle,一直只有一个stage,所以分区数一开始就减少了。