通过一个实验来看Spark 中 map 与 flatMap 的区别。

步骤一:将测试数据放到hdfs上面

hadoopdfs -put data1/test1.txt /tmp/test1.txt

该测试数据有两行文本:

步骤二:在Spark中创建一个RDD来读取hdfs文件/tmp/test1.txt

步骤三:查看map函数的返回值

得到map函数返回的RDD:

查看map函数的返回值——文件中的每一行数据返回了一个数组对象

步骤四:查看flatMap函数的返回值

得到flatMap函数返回的RDD:

查看flatMap函数的返回值——文件中的所有行数据仅返回了一个数组对象

总结:

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

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

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

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

Spark 中 map 与 flatMap 的区别相关推荐

  1. Stream中map和flatmap的区别,一看就懂

    在日常开发中,我们经常会使用Stream来处理集合的操作. 其中,map是我们经常用到的api方法,同时呢,Stream也给我们提供了flatmap的方法. 这时候很多小伙伴就会搞不懂,这map和fl ...

  2. java8 flatmap与map_java8中map和flatMap区别

    1.函数定义比较 map注释: /** * Returns a stream consisting of the results of applying the given * function to ...

  3. Spark中foreachPartition和mapPartitions的区别

    Spark中foreachPartition和mapPartitions的区别 spark的运算操作有两种类型:分别是Transformation和Action,区别如下: Transformatio ...

  4. stream map方法_Java Stream中map和flatMap方法

    最近看到一篇讲stream语法的文章,学习Java中map()和flatMap()方法之间的区别. 虽然看起来这两种方法都做同样的事情,都是做的映射操作,但实际上差之毫厘谬以千里. 通过演示Demo中 ...

  5. java flatmapfunction_Java Stream中map和flatMap方法

    最近看到一篇讲stream语法的文章,学习Java中map()和flatMap()方法之间的区别. 虽然看起来这两种方法都做同样的事情,都是做的映射操作,但实际上差之毫厘谬以千里. 通过演示Demo中 ...

  6. 一眼看懂map和flatmap的区别

    map的作用很容易理解就是对rdd之中的元素进行逐一进行函数操作映射为另外一个rdd. flatMap的操作是将函数应用于rdd之中的每一个元素,将返回的迭代器的所有内容构成新的rdd.通常用来切分单 ...

  7. 原 c++中map与unordered_map的区别

    c++中map与unordered_map的区别 头文件 map: #include < map > unordered_map: #include < unordered_map ...

  8. Java基础之Java8中map和flatMap的使用

    Java基础之Java8中map和flatMap的使用 一.介绍 首先,看下map和flatMap的官方文档说明 map flatMap 其实单纯的看api说明还是比较抽象,下面我将以几个实战例子来帮 ...

  9. Spark中mapToPair和flatMapToPair的区别【附示例源码及运行结果】

    本文重点介绍 Spark 中 [mapToPair]和[flatMapToPair]的区别,请继续看到尾部,后续有示例说明,会理解更加清晰. 函数原型 1.JavaPairRDD<K2,V2&g ...

  10. map写法 scala语言_(转)scala中map与flatMap浅析

    在函数式语言中,函数作为一等公民,可以在任何地方定义,在函数内或函数外,可以作为函数的参数和返回值,可以对函数进行组合.由于命令式编程语言也可以通过类似函数指针的方式来实现高阶函数,函数式的最主要的好 ...

最新文章

  1. Python : *号和**号的使用
  2. Convert Sorted Array to Binary Search Tree
  3. Android开发之打开指定APP | 打开APP任意页面的方法
  4. Ajax联手SOA打造企业级应用
  5. 完美:C# Blazor中显示Markdown并添加代码高亮
  6. HDU 3555: Bomb
  7. java 8和jdk区别_java-8 – JDK 6和JDK8之间的Java Collection差异
  8. 程序员的那点事(转自java老师李明志)
  9. picasa解决方案
  10. 成都高新南区 高新西区 东部新区 多边形范围点位 AOI 高德
  11. 《Excel大神上分攻略》学习笔记2——定位、查找、排序、筛选
  12. 网站上传服务器浏览器打不开,网站发布或自己上传程序后,网站打不开的原因有哪些?...
  13. 如何撰写《软件项目方案文档》
  14. Y470N 显卡超频了GT550m 完美2.10 bios
  15. mysql字段替换_mysql 替换字段部分内容及mysql 替换函数replace()
  16. mSystems:苏晓泉、徐健等发布全球微生物组结构和功能搜索平台2.0
  17. QT210 自制bootloader 移植kernel3.4.2 制作ramdisk busybox1.20.2
  18. 电源原副边电气间隔和爬电距离
  19. 开启不明确行为的潘多拉盒子——解释
  20. 有的人活着他已经死了,有的人死了他还活着

热门文章

  1. 搭建vue项目时运行npm run dev 报错问题解决
  2. 再见,Python!你好,Go语言\n\n
  3. VR AR体验或成2017圣丹斯电影节“新主角”
  4. [揭秘]如何通过“人工智能”对直播的内容风险防控
  5. 多因素方差分析:自由度
  6. C# 添加服务引用。
  7. java的HashCode方法(转载)
  8. 程序员的一种境界【转的】
  9. FLEX与JAVA不通讯错误与解决方法(转)
  10. C++经典书籍推荐 .