Spark - 减少Scala中键值对的列表

时间:2017-12-08 18:28:18

标签: scala apache-spark spark-streaming

我在spark流式上下文中有一个键值对列表。在键值对列表的情况下,如何使用按键进行聚合? 示例:

[("key1",2),("key2",3)]
[("key1",4),("key3",2)]
[("key2",4),("key3",2)]

预期的汇总输出:

("key1", 6)
("key2", 7)
("key3", 4)

1 个答案:

答案 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))
相关问题