开发调优
2019-08-03 本文已影响0人
sakura_bin
- 对于同一份数据,只应该创建一个RDD,不能创建多个RDD来代表同一份数据
- 应该尽量复用一个RDD,这样可 以尽可能地减少RDD的数量,从而尽可能减少算子执行的次数。
- 对多次使用的RDD进行持久化
使用cache()方法 或 persist()方法 - 能避免则尽可能避免使用reduceByKey、join、distinct、repartition等会进行 shuffle的算子,尽量使用map类的非shuffle算子
- 尽量使用可以map-side预聚合的算子。
- 使用高性能算子,如:
使用reduceByKey/aggregateByKey替代groupByKey
使用mapPartitions替代普通map
使用foreachPartitions替代foreach
使用filter之后进行coalesce操作
使用repartitionAndSortWithinPartitions替代repartition与sort类操作