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是按照分区进行运算的。