1、避免创建重复的RDD
2、尽可能复⽤同⼀个RDD
3、对多次使⽤的RDD进⾏持久化
4、尽量避免使⽤shuffle类算⼦
5、使⽤map-sid预聚合的shuffle操作
所谓的map-side预聚合,说的是在每个节点本地对相同的key进⾏⼀次聚合操作,类似MapReduce中的本地combiner。map-side预聚合之后,每个节点本地就只会有⼀条相同的key,因为多条相同的key都被聚合起来了。其他节点在拉取所有节点上的相同key时,就会⼤⼤减少需要拉取的数据数量,从⽽也就减少了磁盘IO以及⽹络传输开销。如reduceByKey或者aggregateByKey代替groupByKey。
6、使⽤⾼性能算⼦
⽐如使⽤reduceByKey/aggregateByKey替代groupByKey
使⽤mapPartitions替代普通map