1.尽可能复用RDD
2.对多次使用的RDD进行持久化(cache、persist,持久化的几种策略:MEMORY_ONLY、MEMORY_AND_DISK、DISK_ONLY...等)
3.(类似mapjoin)对于大RDD join 小RDD的情况,可以使用广播变量的方式把小RDD的数据发送到各个excutor,然后在大RDD的算子中取出来进行连接,避免shffle
4.使用reduceByKey替换groupByKey:reduceByKey会在shuffle之前先进行一次合并,减少shuffle数据量,提升性能
5.尽量使用mapPartitions替代map
6.尽量使用foreachPartitions替代foreach
spark的优化
原文:https://www.cnblogs.com/yangxcc/p/14596724.html