如何使用Spark的reduceByKey对列表中的整数求和?

我有一个(键,值),其值等于列表中的整数列表。我的意思是:

(Key,Value) = ("aaa",[ [1,2,3],[1,1,1] ])

我想用reducebykey求和相同位置的每个值,如下所示:

("aaa",[1+1,2+1,3+1])

使用reduceBykey函数执行此操作的最佳方法是什么?

谢谢!

wyw521 回答:如何使用Spark的reduceByKey对列表中的整数求和?

尽管我不确定为什么您需要在此处使用reduceByKey,但要根据我的理解提供解决方案。

import sparkSession.implicits._
def col2sum(x:Array[Int],y:Array[Int]):Array[Int] = {
     x.zipAll(y,0).map(pair=>pair._1+pair._2)
}
val kvData = sparkSession.sparkContext.parallelize(Seq(("aaa",Array(Array(1,2,3),Array(1,1,1)))))
val output = kvData.map(data => (data._1,data._2.reduce(col2sum)))

转换为DataFrame以检查结果:

output.toDF("field_1","field_2").show()
+----+---------+
|ddff|    dffhj|
+----+---------+
| aaa|[2,3,4]|
+----+---------+
本文链接:https://www.f2er.com/3127600.html

大家都在问