2016-08-15 3 views
0

Ich bin neu zu scala und Funken. kann jemand mir helfen, den folgenden Fehler zu verstehen, während ich combineByKey benutze.CombineBy Key Implentiation Fehler

val combineRdd = filterRdd.combineByKey((value : Double) => (value ,1) , (acc : Double , value : Double) => ((acc._1 + value) , (acc._2 +1)) , (acc : Double, value : Double) => acc._1 + value._1 , acc._2 + value._2) 

Filter Rdd ist nur

scala> filterRdd.first 
res6: (Int, Double) = (1,299.98) 

Fehler ist: 31: Fehler: Wert _1 ist kein Mitglied von Double

Vielen Dank im Voraus

+0

'Wert' ist ein' Double', trotzdem greifen Sie darauf wie ein Tupel zu. Es hat kein '_1'. –

+0

Hat der Variablenname in 3 closureByKey eine Verknüpfung über die 3 Funktionen? –

+1

Nein, es gibt keine "Verbindung" zwischen Variablennamen. –

Antwort

0

Hier ist der richtige Code ist

val combineRdd = filterRdd.combineByKey((value : Double) => (value ,1) , (acc : (Double, Int) , value : Double) => ((acc._1 + value) , (acc._2 +1)) , (acc : (Double , Int), value : (Double,Int)) => (acc._1 + value._1 , acc._2 + value._2)) combineRdd: org.apache.spark.rdd.RDD[(Int, (Double, Int))] = ShuffledRDD[3] at combineByKey at <console>:31