如何计算Spark RDD的平均值? [英] How can I count the average from Spark RDD?

查看:811
本文介绍了如何计算Spark RDD的平均值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Spark Scala出现问题,我想从Rdd数据中计算平均值,这样创建一个新的RDD,

I have a problem with Spark Scala which I want count the average from the Rdd data,I create a new RDD like this,

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

我想这样数他们

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

然后,得到这样的结果

   [(2,120),(3,204),(4,160)]

如何使用RDD中的scala做到这一点? 我使用的是Spark 1.6版

How can I do this with scala from RDD? I use spark version 1.6

推荐答案

您可以使用aggregateByKey.

you can use aggregateByKey.

val rdd = sc.parallelize(Seq((2,110),(2,130),(2,120),(3,200),(3,206),(3,206),(4,150),(4,160),(4,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

这篇关于如何计算Spark RDD的平均值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆