[语法]flatMap与map 的区别~Spark 中

spark中flatMap函数用法--spark学习(基础) - 博客频道 - CSDN.NET
http://blog.csdn.net/u010824591/article/details/50732996
说明
在spark中map函数和flatMap函数是两个比较常用的函数。其中 map:对集合中每个元素进行操作。 flatMap:对集合中每个元素进行操作然后再扁平化。

实际使用场景
这个场景是我曾经在写代码过程中遇到的难题,在字符串中如何统计相邻字符对出现的次数。意思就是如果有A;B;C;D;B;C字符串,则(A,B),(C,D),(D,B)相邻字符对出现一次,(B,C)出现两次。 如有数据
A;B;C;D;B;D;CB;D;A;E;D;CA;B
1
2
3

统计相邻字符对出现次数代码如下
data.map(.split(";")).flatMap(x=>{ for(i<-0 until x.length-1) yield (x(i)+","+x(i+1),1) }).reduceByKey(+_).foreach(println)
1
2
3

输出结果为
(A,E,1)(E,D,1)(D,A,1)(C,D,1)(B,C,1)(B,D,2)(D,C,2)(D,B,1)(A,B,2)
1
2
3
4
5
6
7
8
9

此例子就是充分运用了flatMap的扁平化功能。


Spark 中 map 与 flatMap 的区别 - samhacker的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/samhacker/article/details/41927567
总结:

  • Spark 中 map函数会对每一条输入进行指定的操作,然后为每一条输入返回一个对象;

  • 而flatMap函数则是两个操作的集合——正是“先映射后扁平化”:

    操作1:同map函数一样:对每一条输入进行指定的操作,然后为每一条输入返回一个对象

    操作2:最后将所有对象合并为一个对象

你可能感兴趣的:([语法]flatMap与map 的区别~Spark 中)