我在spark流式上下文中有一个键值对列表。在键值对列表的情况下,如何使用按键进行聚合? 示例:
[("key1",2),("key2",3)]
[("key1",4),("key3",2)]
[("key2",4),("key3",2)]
预期的汇总输出:
("key1", 6)
("key2", 7)
("key3", 4)
答案 0 :(得分:2)
首先使用flatMap
然后reduceByKey
:
val rdd = sc.parallelize(Seq(Seq(("key1",2),("key2",3)), Seq(("key1",4),("key3",2)), Seq(("key2",4),("key3",2))))
rdd.flatMap(identity).reduceByKey(_+_).collect
// res2: Array[(String, Int)] = Array((key1,6), (key2,7), (key3,4))