gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 03:53:20 26 4
gpt4 key购买 nike

我在使用 Spark Scala 时遇到问题,我想计算 Rdd 数据的平均值,我像这样创建一个新的 RDD,

[(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

最佳答案

您可以使用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

关于scala - 如何计算 Spark RDD 的平均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46171294/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com