如果我有鍵值對,這些鍵值對會影響專案(鍵)和銷售額(值):
bolt 45
bolt 5
drill 1
drill 1
screw 1
screw 2
screw 3
所以我想獲得一個 RDD,其中每個元素都是每個唯一鍵的值的總和:
bolt 50
drill 2
screw 6
我目前的代碼是這樣的:
val salesRDD = sc.textFile("/user/bigdata/sales.txt")
val pairs = salesRDD.map(s => (s, 1))
val counts = pairs.reduceByKey((a, b) => a b)
counts.collect().foreach(println)
但我的結果是這樣的:
(bolt 5,1)
(drill 1,2)
(bolt 45,1)
(screw 2,1)
(screw 3,1)
(screw 1,1)
我應該如何編輯我的代碼以獲得上述結果?
uj5u.com熱心網友回復:
Java方式,希望你能把它轉換成scala。看起來你只需要一個 groupby 并計數
salesRDD.groupBy(salesRDD.col("name")).count();
----- -----
| name|count|
----- -----
| bolt| 50|
|drill| 2|
|screw| 6 |
----- -----
另外,請使用資料集和資料幀而不是 RDD。你會發現它很方便
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/360751.html
