文档章节

map and flatmap 区别

Faye_Cai
 Faye_Cai
发布于 2016/06/11 21:36
字数 352
阅读 32
收藏 0

map vs flatMap in Spark

September 24, 2014Big Dataexample, spark

In the previous blogs around Spark examples, RDD.flatMap() has been used. In this blog we will look at the differences between RDD.map() and RDD.flatMap().

map and flatMap are similar, in the sense they take a line from the input RDD and apply a function on it. The way they differ is that the function in map returns only one element, while function in flatMap can return a list of elements (0 or more) as an iterator.

Also, the output of the flatMap is flattened. Although the function in flatMap returns a list of elements, the flatMap returns an RDD which has all the elements from the list in a flat way (not a list).

Sounds a bit confusing. In the below code snippet, on the input lines both map and flatMap are applied and output dumped in HDFS to wordsWithMap and wordsWithFlatMap folder.

from pyspark import SparkContext sc = SparkContext("spark://bigdata-vm:7077", "Map") lines = sc.parallelize(["hello world", "hi"]) wordsWithMap = lines.map(lambda line: line.split(" ")).coalesce(1) wordsWithFlatMap = lines.flatMap(lambda line: line.split(" ")).coalesce(1) wordsWithMap.saveAsTextFile("hdfs://localhost:9000/user/bigdatavm/wordsWithMap") wordsWithFlatMap.saveAsTextFile("hdfs://localhost:9000/user/bigdatavm/wordsWithFlatMap")

1

2

3

4

5

6

7

8

9

10

from pyspark import SparkContext

 

sc = SparkContext("spark://bigdata-vm:7077", "Map")

lines = sc.parallelize(["hello world", "hi"])

 

wordsWithMap = lines.map(lambda line: line.split(" ")).coalesce(1)

wordsWithFlatMap = lines.flatMap(lambda line: line.split(" ")).coalesce(1)

 

wordsWithMap.saveAsTextFile("hdfs://localhost:9000/user/bigdatavm/wordsWithMap")

wordsWithFlatMap.saveAsTextFile("hdfs://localhost:9000/user/bigdatavm/wordsWithFlatMap")

 

The output of the map function in HDFSmap-output
The output of the flatMap function in HDFSflatMap-output

Conclusion

The input function to map returns a single element, while the flatMap returns a list of elements (0 or more). And also, the output of the flatMap is flattened.

In the case of word count, where the input line is split into multiple words, flatMap can be used. Also, in the case of weather data set, the extractData nethod will validate the record and might or might not return a value. In this case also, flatMap can be used.

Share this:

本文转载自:http://www.dattamsha.com/2014/09/map-vs-flatmap-spark/

共有 人打赏支持
Faye_Cai
粉丝 0
博文 28
码字总数 5590
作品 0
海淀
高级程序员
spark快速大数据分析之读书笔记-flatmap与map的区别

以前总是分不清楚spark中flatmap和map的区别,现在弄明白了,总结分享给大家,先看看flatmap和map的定义。 map()是将函数用于RDD中的每个元素,将返回值构成新的RDD。 flatmap()是将函数应用...

sucre
2016/02/23
4K
2
Java 8引入了一个新的Optional类的详细使用

新版本的Java,比如Java 8引入了一个新的Optional类。Optional类的Javadoc描述如下: 这是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。 ...

weiliu007
2016/09/13
13
0
spark 的rdd的函数中 flatMap 在项目中的意义和场景作用?

flatMap 与map类似,区别是原RDD中的元素经map处理后只能生成一个元素,而原RDD中的元素经flatmap处理后可生成多个元素来构建新RDD。 举例:对原RDD中的每个元素x产生y个元素(从1到y,y为元...

sca7
2017/02/15
40
0
【Java8】Optional

Optional Optional简述 按照字面意思的理解,应该可选的意思。一开始我还以为是类似python里面的默认参数用法呢,结果语义是指某个值可能有也可能没有(null)。感觉名字取得不是很直观。。我...

xesam
2014/12/03
0
0
reactor3 flux的map与flatMap的区别

序 本文主要研究一下flux的map与flatMap的区别 map 这里头的map是纯元素转换 输出 flatMap 这里的flatMap,将元素转为Mono或Flux,转换操作里头还可以进行异步操作 输出 小结 flatMap的转换F...

go4it
02/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

windbg学习记录

我开始熟练使用windbg是从帮助手册开始的,也就是.hh命令。 就像学习windows开发从msdn开始一样,微软的产品虽然不开源,但是文档做的是相当的好。然而那些开源的东西呢?开源的竞争力其实就...

simpower
13分钟前
0
0
学习scala的网站汇总

https://www.codacy.com/blog/how-to-learn-scala/

Littlebox
15分钟前
0
0
配置本地的cloud9开发环境

前言 说到在线IDE开发环境,cloud9是不能绕过的,cloud9支持很多语言,默认支持的就有Node.js,Python,Ruby,PHP,Go,更逆天的是,他还支持数据库,包括MySQL,MongoDB,Redis,SQLite。但...

Kefy
19分钟前
1
0
springcloud应用程序上下文层次结构

如果您从SpringApplication或SpringApplicationBuilder构建应用程序上下文,则将Bootstrap上下文添加为该上下文的父级。这是一个Spring的功能,即子上下文从其父进程继承属性源和配置文件,因...

itcloud
24分钟前
0
0
新程序员最爱的免费资源

简评:国外美女程序员推荐了她自己用过的一些免费资源,对新手比较友好的那种。 原作者 Ali Spittel,是个美女程序员,以下这些资源都是她自己试过的。以下「我」代表 Ali Spittel。 学 HTML...

极光推送
27分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部