map:
遍历算子,可以遍历RDD中每一个元素,遍历的单位是每条记录
mapPartitions
遍历算子,可以改变RDD格式,会提高RDD并行度,遍历单位是partition,也就是在遍历之前它会将一个partition的数据加载到内存中
那么问题来了用上面的两个算子遍历一个RDD谁的效率高?
mapPartitions算子效率高
mapPartitions算子占用内存多,如果一个partition的计算结果非常非常大,那么可能造成OOM,怎么解决?
repartition算子来增加RDD的分区数,那么每一个partition的计算结果就减少了很多。
mapPartitions应用场景
一般在将一个RDD的计算结果写入到数据库(mysql oracle redis)中时会使用这个算子,这个算子适合将数据插入到数据库