簡體   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