1.map与mappartition
1.map是对RDD中的每个元素作用上一个函数
2.mappartition是对每个分区作用上一个函数
如果遇到需要把数据写到数据库,一定要用mappartition
2.foreach 与foreachpartition
类似于map与mappartition
区别是:foreach是行动算子,map是转换算子
3.groupByKey与reduceByKey
1.groupByKey
所有数据都经过了shuffle。
2.reduceByKey
会先在map端做一个本地的聚合,然后聚合的数据进行shuffle操作(map端预聚合)
(优先采用这种方法)
4.collect算子
执行结果的数据全部梵高一个数组里(会导致OOM)慎用!
5.coalesce与repartition
两者的作用都是使分区数发生改变
1.coalesce算子
使分区数减少时不会有shuffle,(data.coalesce(1))
使分区数超过默认值时,会有shuffle
一般使用在多分区变少分区
2.repartition算子
repartition算子底层调用coalesce(shuffle = true),会有shuffle