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执行此操作? 解决方法
你可以使用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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |