spark的转换算子中map和flatMap都十分常见,要了解清楚它们的区别,我们必须弄懂每执行一次的数据结构是什么。
这里我们先准备一组数据
hello spark hadoop
jeff ruoze spark
hi spark hello
启动spark之后,读取这个文件
将一行行按照制表符进行分割
对分割好的RDD进行map操作(注意:此时的RDD数据类型以及转换成Array【String】字符串数组)
进行了Map操作后的RDD数据类型已经变换成(Array【String】,Int)的tuple类型了
对同样是刚刚textFile的RDD:String,进行flatMap的制表符切割
此时的数组中纯粹封装的就是数组了,并没有像Map操作一样数组中装着数组
再对这个flatMap(RDD)进行map的封装
总结可得:flatMap是针对原有的基础之上,将Map又继续压扁了