spark中flatMap函数用法–spark学习(基础)「建议收藏」

spark中flatMap函数用法–spark学习(基础)「建议收藏」说明在spark中map函数和flatMap函数是两个比较常用的函数。其中map:对集合中每个元素进行操作。flatMap:对集合中每个元素进行操作然后再扁平化。理解扁平化可以举个简单例子valarr=sc.parallelize(Array((“A”,1),(“B”,2),(“C”,3)))arr.flatmap(x=>(x._1+x._2)).foreach(println)输出

大家好,又见面了,我是你们的朋友全栈君。

说明

在spark中map函数和flatMap函数是两个比较常用的函数。其中
map:对集合中每个元素进行操作。
flatMap:对集合中每个元素进行操作然后再扁平化。
理解扁平化可以举个简单例子

val arr=sc.parallelize(Array(("A",1),("B",2),("C",3)))
arr.flatmap(x=>(x._1+x._2)).foreach(println)

输出结果为

A
1
B
2
C
3

如果用map

val arr=sc.parallelize(Array(("A",1),("B",2),("C",3)))
arr.map(x=>(x._1+x._2)).foreach(println)

输出结果

A1
B2
C3

所以flatMap扁平话意思大概就是先用了一次map之后对全部数据再一次map。

实际使用场景

这个场景是我曾经在写代码过程中遇到的难题,在字符串中如何统计相邻字符对出现的次数。意思就是如果有A;B;C;D;B;C字符串,则(A,B),(C,D),(D,B)相邻字符对出现一次,(B,C)出现两次。
如有数据

A;B;C;D;B;D;C
B;D;A;E;D;C
A;B

统计相邻字符对出现次数代码如下

data.map(_.split(";")).flatMap(x=>{
      for(i<-0 until x.length-1) yield (x(i)+","+x(i+1),1)
    }).reduceByKey(_+_).foreach(println)

输出结果为

(A,E,1)
(E,D,1)
(D,A,1)
(C,D,1)
(B,C,1)
(B,D,2)
(D,C,2)
(D,B,1)
(A,B,2)

此例子就是充分运用了flatMap的扁平化功能。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/140836.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 程序员如何学习量化交易,一文总结

    程序员如何学习量化交易,一文总结最近有位金融行业的朋友想把一个盈利能力很强的策略做成量化程序遇到问题,问题是这样的线程A在while(true)的循环里做条件判断,循环耗时1分钟。循环结束判断条件满足的时候调用交易接口下单建仓。想实现条件成立马上建仓,而不需要等待1分钟的循环。想通过多进程或者多线程方式,但两个线程不知道如何交互。对有经验的开发来说这样的逻辑很简单,只要通过线程通信的方式就可以实现。A线程判断到满足条件就发个消息给B线程,B线程while(true)等待消息就行。技术本身不复杂,只是没接触过编程的不知道还可以这么干

    2022年6月26日
    29
  • bwappxss_α·pav

    bwappxss_α·pavzeronil

    2022年9月15日
    0
  • linux卸载宝塔面板_怎么卸载宝塔面板

    linux卸载宝塔面板_怎么卸载宝塔面板宝塔的安装与卸载安装Centos安装脚本yuminstall-ywget&&wget-Oinstall.shhttp://download.bt.cn/install/install_6.0.sh&&shinstall.shUbuntu/Deepin安装脚本wget-Oinstall.shhttp://download.bt.c…

    2022年9月6日
    2
  • 用vue实现入库单的打印「建议收藏」

    用vue实现入库单的打印「建议收藏」1、安装vue-print-nb插件npminstallvue-print-nb–save2、在main.js文件中引入插件importPrintfrom’vue-print-nb’Vue.use(Print)3、编写程序<divstyle=”width:37%”align=”center”><divid=”printTest”s…

    2022年9月2日
    7
  • J2EE之普通类载入web资源文件的方法

    J2EE之普通类载入web资源文件的方法

    2021年12月1日
    47
  • 将vue项目打包成移动端app(app打包教程)

    Vue项目打包成移动端APP需要准备的工具:Hbuilder目录Vue项目打包成移动端APP首先打包vue到dist目录然后再Hbuilder中打开dist目录然后将dist包含的web项目转换为移动APP项目前几步配置完成后,就可以在手机上进行真机调试了真机测试没有问题,就可以进行下一步—》打包apk了最后将apk安装包安装到手机上就可以正常使用了…

    2022年4月10日
    1.5K

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号