spark 中map 和 flatMap 的区别

代码如下:


scala> sc.parallelize(Array("a_b","c_d","e_f")).foreach(println)
a_b
c_d
e_f



scala> sc.parallelize(Array("a_b","c_d","e_f")).map(string=>{string.split("_")}).foreach(x=>{println(x.mkString(","))})
c,d
a,b
e,f

scala> sc.parallelize(Array("a_b","c_d","e_f")).flatMap(string=>{string.split("_")}).foreach(x=>{println(x.mkString(","))})
a
b
c
d
e
f

可以发现:flatMap = flatten + map,flatMap 会把数组里面的元素先压平,降到一维,再打碎。
而 map 只是把最外围的包裹打开。

原文地址:https://www.cnblogs.com/bigband/p/13560838.html