2016-08-13 53 views
0

我是一種新的Spark和編程,我也無法理解如何處理rdd.RDD[(Int, Iterable[Double])] = ShuffledRDD[10] at groupByKey類型的Rdd。我有點興趣的火花學習groupByKey和我有一個過濾RDDGroup由錯誤33:參數的錯誤編號

scala> p.first res11: (Int, Double) = (1,299.98)

我去上面的結果,現在我已經RDD類型的應用,而不是reduceByKey GroupByKEy後(智力,可迭代[雙])並且我想得到像(Int,sum(Double))的結果。 我試過這個,但得到了錯誤。

scala> val price = g.map((a,b) => (a, sum(b))) 
<console>:33: error: wrong number of parameters; expected = 1 
     val price = g.map((a,b) => (a, sum(b))) 

請建議和幫助我這個不懂

回答

0

g.mapValues(_.sum),這是短期的g.map { case (k, v) => (k, v.sum) }

+0

謝謝@Tzach瑣對此的解釋,它幫了我很多,我有一個愚蠢的問題請與我一起裸露,地圖中案件的重要性如何。 –

+0

'case'是模式匹配表達式的一部分,上面的表達式是'g.map(r => r match {case(k,v)=>(k,v.sum)})'的簡寫。你可以在這裏瞭解模式匹配:http://docs.scala-lang.org/tutorials/tour/pattern-matching.html和這裏簡短的語法:http://danielwestheide.com/blog/2012/12/ 12/the-neophytes-guide-to-scala-part-4-pattern-matching-anonymous-functions.html –

+0

謝謝@Tzach Zohar –