加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 如何计算Spark RDD的平均值?

发布时间:2020-12-16 18:09:43 所属栏目:安全 来源:网络整理
导读:我有一个Spark Scala的问题,我想要计算Rdd数据的平均值,我创建一个像这样的新RDD, [(2,110),(2,130),120),(3,200),206),(4,150),160),170)] 我想像他们一样数数, [(2,(110+130+120)/3),(200+206+206)/3),(150+160+170)/3)] 然后,得到这样的结果,204),160)]
我有一个Spark Scala的问题,我想要计算Rdd数据的平均值,我创建一个像这样的新RDD,

[(2,110),(2,130),120),(3,200),206),(4,150),160),170)]

我想像他们一样数数,

[(2,(110+130+120)/3),(200+206+206)/3),(150+160+170)/3)]

然后,得到这样的结果,204),160)]

如何使用RDD中的scala执行此操作?
我使用火花版1.6

解决方法

你可以使用aggregateByKey.

val rdd = sc.parallelize(Seq((2,170)))
val agg_rdd = rdd.aggregateByKey((0,0))((acc,value) => (acc._1 + value,acc._2 + 1),(acc1,acc2) => (acc1._1 + acc2._1,acc1._2 + acc2._2))
val sum = agg_rdd.mapValues(x => (x._1/x._2))
sum.collect

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读