2016-05-25 115 views
0

我輸入文件低於星火代碼申請SUM AGG功能

surender,2015-JAN,100 
raja,2015-JAN,20 
kumar,2015-FEB,2 
ajay,2015-FEB,23 

我需要創建一個輸出「找到花費每個月總量」

預計輸出

2015-JAN,120 
2015-FEB,25 

我試過火花外殼下面的代碼

scala> val fileRDD = sc.textFile("/user/cloudera/records.txt") 

scala> val mapRDD = fileRDD.map(x => (x.split(",")(1),x.split(",")(2))) 

scala> val reduceRDD = mapRDD.reduceByKey((a,b) => (a+b)) 

scala> reduceRDD.collect 

我正在輸出,但它不正確。 Concat操作適用於金額。

res21: Array[(String, String)] = Array((2015-JAN,10020), (2015-FEB,223)) 

如何對它進行類型轉換。

回答

2

在你的地圖的第二部分添加.toInt:

val mapRDD = fileRDD.map(x => (x.split(",")(1),x.split(",")(2).toInt)) 

它仍然認爲這是一個字符串,如果你不這樣做,現在將增加整數。

1

這就是:

val fileRDD = sc.textFile("test.txt") 
val mapRDD = fileRDD.map(x => (x.split(",")(1),x.split(",")(2).toInt)) 
val reduceRDD = mapRDD.reduceByKey(_ + _) 
reduceRDD.collect.foreach(println) 
+0

明白了。完美.. –