繁体   English   中英

Spark AggregateByKey从pySpark到Scala

[英]Spark AggregateByKey From pySpark to Scala

我将所有代码都转移到scala上,而我在pySpark中有一个函数,对于如何将其转换为scala几乎一无所知。 有人可以提供帮助并提供解释吗? PySpark看起来像这样:

.aggregateByKey((0.0, 0.0, 0.0),
                         lambda (sum, sum2, count), value: (sum + value, sum2 + value**2, count+1.0),
                         lambda (suma, sum2a, counta), (sumb, sum2b, countb): (suma + sumb, sum2a + sum2b, counta + countb))

编辑:到目前为止,我有:

val dataSusRDD = numFilterRDD.aggregateByKey((0,0,0), (sum, sum2, count) =>

但是我无法理解的是您如何在scala中编写此代码,因为该组函数随后将值指定为一组动作(sum + value等)。 到第二个聚合函数中,都使用正确的语法。 在这种情况下很难一致地陈述我的麻烦。 它的更多内容使我不了解scala,以及何时使用括号,vs括号,vs,逗号

正如@paul所建议的那样,使用命名函数可能会使了解发生的事情更加简单。

val initialValue = (0.0,0.0,0.0)
def seqOp(u: (Double, Double, Double), v: Double) = (u._1 + v, u._2 + v*v, u._3 + 1)
def combOp(u1: (Double, Double, Double),  u2: (Double, Double, Double)) = (u1._1 + u2._1, u1._2 + u2._2, u1._3 + u2._3)
rdd.aggregateByKey(initialValue)(seqOp, combOp)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM