map与flatmap区别

map的作用很容易理解就是对rdd之中的元素进行逐一进行函数操作映射为另外一个rdd。flatMap的操作是将函数应用于rdd之中的每一个元素,将返回的迭代器的所有内容构成新的rdd。通常用来切分单词。
Spark 中 map函数会对每一条输入进行指定的操作,然后为每一条输入返回一个对象;
- 而flatMap函数则是两个操作的集合——正是“先映射后扁平化”:
操作1:同map函数一样:对每一条输入进行指定的操作,然后为每一条输入返回一个对象
操作2:最后将所有对象合并为一个对象

举例:
文本为:
中国 2017年
今天 天气 不错
map:

var result = textFile.map(line=>{line.split("\\s+")})

result 为 Array(Array(中国,2017年),Array(今天,天气,不错))
flatMap:

var result = textFile.flatMap(line=>{line.split("\\s+")})

result 为 Array(中国,2017年,今天,天气,不错)

wordcount:

var textFile=sc.textFile("hdfs://master:9000/ljq/tmp/word")
val results= textFile.flatMap(line=>{line.split("\\s+")}.map(word=>(word,1))).reduceByKey((a,b)=>a+b)

你可能感兴趣的:(spark,map,Hadoop相关,spark,map)