如何计算Spark RDD的平均值? [英] How can I count the average from Spark RDD?
本文介绍了如何计算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屋!
查看全文