一.在聚合前在map端先预聚合 使用reduceByKey/aggregateByKey代替groupByKey 二.一次处理一个分区的数据,不过要注意一个分区里的数据不要太大,不然会报oom * 使用mapPartitions代替map * 使用foreachPartitions代替foreach 三.使用重分区 * 在过滤后使用算子coalesce(),避免过滤后可能产生的数据倾斜 四.对多次使用的rdd进行持久化,增加rdd的复用性. 每个rdd都会有一个血缘链,如果某个算子的上游rdd能…