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

前端之家收集整理的这篇文章主要介绍了scala – 如何计算Spark RDD的平均值?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个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

猜你在找的Scala相关文章