企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## Spark中的OOM问题不外乎以下两种情况: ####(1)map类型的算子执行中内存溢出如flatMap,filter,mapPatitions   map端过程产生大量对象导致内存溢出:这种溢出的原因是在单个map中产生了大量的对象导致的针对这种问题,在不增加内存的情况下,可以通过减少每个Task的大小,以便达到每个Task即使产生大量的对象Executor的内存也能够装得下。 具体做法可以在会产生大量对象的map操作之前调用repartition方法,分区成更小的块传入map。 ####  (2)shuffle后内存溢出如join,reduceByKey,repartition   shuffle内存溢出的情况可以说都是shuffle后,单个文件过大导致的。 在shuffle的使用,需要传入一个partitioner,大部分Spark中的shuffle操作,默认的partitioner都是HashPatitioner,默认值是父RDD中最大的分区数. 这个参数spark.default.parallelism只对HashPartitioner有效. 如果是别的partitioner导致的shuffle内存溢出就需要重写partitioner代码了.