Spark中flatMap、Map以及mapPartitions的区别
一、flatMap
作用:首先将函数应用于RDD的所有元素,然后将结果展平,返回一个新的RDD。
应用场景:文件中的所有行数据仅返回了一个数组对象。(即:Map映射 + 数据扁平化操作)
二、Map
作用:通过将函数应用于此RDD的所有元素,返回一个新RDD。
应用场景:文件中的每一行数据返回了一个数组对象;
三、mapPartitions
作用:通过对RDD的每个分区应用一个函数来返回一个新的RDD。
应用场景:当数据量不太大的时候,可以用mapPartitions,可以提高运行效率。当数据量太大的时候,有可能会发生oom。
四、示例
1、生成一个RDD,并设置2个分区
2、使用map是所有元素加1
3、使用mapPartitions 使所有元素加1
此时,结果是一致的,但mapPartitions运行效率更高。
4、将RDD中的元素倒置
此时可以看到,mapPartitions是按照分区进行运算的。