文档章节

spark快速大数据分析之读书笔记-flatmap与map的区别

sucre
 sucre
发布于 2016/02/23 21:21
字数 255
阅读 4350
收藏 4

以前总是分不清楚spark中flatmap和map的区别,现在弄明白了,总结分享给大家,先看看flatmap和map的定义。

map()是将函数用于RDD中的每个元素,将返回值构成新的RDD。

flatmap()是将函数应用于RDD中的每个元素,将返回的迭代器的所有内容构成新的RDD

有些拗口,看看例子就明白了。

val rdd = sc.parallelize(List("coffee panda","happy panda","happiest panda party"))

输入

rdd.map(x=>x).collect

结果

res9: Array[String] = Array(coffee panda, happy panda, happiest panda party)

输入

rdd.flatMap(x=>x.split(" ")).collect

结果

res8: Array[String] = Array(coffee, panda, happy, panda, happiest, panda, party)

flatMap说明白就是先map然后再flat,再来看个例子

val rdd1 = sc.parallelize(List(1,2,3,3))
scala> rdd1.map(x=>x+1).collect
res10: Array[Int] = Array(2, 3, 4, 4)
scala> rdd1.flatMap(x=>x.to(3)).collect
res11: Array[Int] = Array(1, 2, 3, 2, 3, 3, 3)

这下应该完全明白了吧,不懂给我留言,欢迎指正。

© 著作权归作者所有

共有 人打赏支持
sucre
粉丝 30
博文 402
码字总数 211160
作品 0
高级程序员
加载中

评论(2)

zhangneww
zhangneww

引用来自“zemel”的评论

你这样写就没有可比性,因为算子里面 方法使用的不一样啊
都使用spilt?
rdds.map(x=>x.split(" ")).foreach(println("map(x=>x.split:",_))
rdds.flatMap(x=>x.split(" ")).foreach(println("flatmap(x=>x.split:",_))
一针见血
z
zemel
你这样写就没有可比性,因为算子里面 方法使用的不一样啊
都使用spilt?
rdds.map(x=>x.split(" ")).foreach(println("map(x=>x.split:",_))
rdds.flatMap(x=>x.split(" ")).foreach(println("flatmap(x=>x.split:",_))
Spark入门——什么是Hadoop,为什么是Spark?

  #Spark入门#这个系列课程,是综合于我从2017年3月分到今年7月份为止学习并使用Spark的使用心得感悟,暂定于每周更新,以后可能会上传讲课视频和PPT,目前先在博客园把稿子打好。注意:这...

wing1995
07/19
0
0
Spark 入门(Python、Scala 版)

本文中,我们将首先讨论如何在本地机器上利用Spark进行简单分析。然后,将在入门级水平探索Spark,了解Spark是什么以及它如何工作(希望可以激发更多探索)。最后两节将开始通过命令行与Spa...

大数据之路
2015/05/07
0
0
第二期:关于十大数据相关问答汇总,关注持续更新中哦~

NO.1 学大数据如何零基础入门? 答:学习任何东西都一样,一开始就是一道坎,我很喜欢看书,特别是容易入门的书。对于大数据,我的具体研究方向是大规模数据的机器学习应用,所以首先要掌握以...

琳达老师
05/12
0
0
2018最新版本的spark面试题及答案

Spark是一个围绕速度、易用性和复杂分析构建的大数据处理框架,Spark提供了一个全面、统一的框架用于管理各种有着不同性质(文本数据、图表数据等)的数据集和数据源(批量数据或实时的流数据)...

嘿你好夏天
04/03
0
0
最最简单的~WordCount¬

sc.textFile("hdfs://....").flatMap(line =>line.split(" ")).map(w =>(w,1)).reduceByKey(+).foreach(println) 不使用reduceByKey sc.textFile("hdfs://....").flatMap(l=>l.split(" ")).m......

雪童子
2015/10/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

[Hive]JsonSerde使用指南

注意: 重要的是每行必须是一个完整的JSON,一个JSON不能跨越多行,也就是说,serde不会对多行的Json有效。 因为这是由Hadoop处理文件的工作方式决定,文件必须是可拆分的,例如,Hadoop将在...

Mr_yul
10分钟前
0
0
54:mysql修改密码|连接mysql|mysql常用命令

1、mysql修改密码: root用户时mysql的超级管理员,默认mysql的密码是空的,直接可以连接上去的,不过这样不安全; 注释:为了方便的使用mysql,需要把mysql加入到环境变量里; #后续自己输入mys...

芬野de博客
17分钟前
0
0
鼠标单击复制粘贴标签中的内容

<span ref="spanContentOne" id="spanContentOne" style="font-size: 14px;">或许不是最亮眼,总比瞎买强一点</span><!--<input type="button" @click="copyClick('1')" value="复制" />-......

帝子兮
21分钟前
0
0
使用axel多线程疯狂下载

在Linux中比较常见见的下载工具是curl和wget,但是下载比较大的文件两者都不支持多线程, 断点续传的作用不见得能发挥到最大。今天介绍一个axel工具,开启多线程疯狂下载。 安装 Fedora/Cen...

linuxprobe16
23分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部