博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spark计算平均值
阅读量:4563 次
发布时间:2019-06-08

本文共 697 字,大约阅读时间需要 2 分钟。

对于

Array(('a',1), ('a',2), ('b',3), ('a',4), ('a',15)) 如何计算平均值呢: 原来通过计算两边,第一遍计算总次数
val a = sc.parallelize(data).map(x=>1) val b = sc.parallelize(data).map(x=>x._2) val count = a.reduce(_+_) val value = b.reduce(_+_) print(value/count) 但是这样需要对数据做两次处理,效率大大的下降。能不能只对数据做一次处理就能得到次数和总和呢。以下方法可以做到。
val data = Array(('a',1), ('a',2), ('b',3), ('a',4), ('a',15)) //此处将tuple第一项设置为次数,第二项为待相加的值 val distData = sc.parallelize(data).map(x=>(1,x._2)) //聚合方法,第一项计算总数,第二项计算总和 val add =(x:(Int,Int),y:(Int,Int))=>{(x._1+y._1,x._2+y._2)} //开始计算,最后的结果是 (次数,总和) val ret = distData.reduce(add) //计算平均值 print(ret._2/ret._1) 通过修改add方法,将计算的结果放入到tuple中,即可对数据一次处理时,得到想要的结果。
 
 

转载于:https://www.cnblogs.com/luckuan/p/4720638.html

你可能感兴趣的文章
文件下载
查看>>
extjs grid renderer用法
查看>>
vue 如何在循环中绑定v-model
查看>>
shell脚本
查看>>
[代码笔记]JS保持函数单一职责,灵活组合
查看>>
cmd 重定向
查看>>
【IOS开发】如何画1像素的线
查看>>
【计算机视觉】双目测距(五)--匹配算法对比
查看>>
KMP模板
查看>>
luogu 1314 聪明的质检员
查看>>
[转载]求职者防骗必读!楼主亲身经历告诉你岗前培训多么不靠谱而且违法!
查看>>
Hibernate内存溢出分析一例
查看>>
基于Axis1.4的webservice接口开发(接口调用)
查看>>
Hive内置函数详解
查看>>
【转】MyEclipse快捷键大全
查看>>
IT职业技能图谱10--Hadoop家族技能图谱
查看>>
Java - 反射(1)
查看>>
控制台中显示执行的Sql语句
查看>>
Linux(Centos7)下搭建SVN服务器
查看>>
安卓开发的Tasks and Back Stack
查看>>