我需要计算RDD中出现次数的元素数。如果我在RDD中的字母计数就像这样:
,这将很容易rdd = sc.parallelize([("a", 1), ("b", 1), ("a", 3)])
rdd.reduceByKey(lambda a,b: a+b).collect() #prints [('a', 4), ('b', 1)]
但是数据的每个元素都来自推文,这意味着每个元素中都会出现几个字母的实例,如下所示:
rdd2 = sc.parallelize([[("a", 2), ("b", 1), ("c", 3)], [("a", 5), ("b", 2)]])
将此组合到key / val元组的分布式数据集中的有效方法是什么?key = letters和val =总出现次数?
我考虑过的解决方案:
非常感谢任何帮助。
答案 0 :(得分:2)
只需flatMap
和reduceByKey
:
rdd2.flatMap(lambda x: x).reduceByKey(lambda x, y: x + y)
收集的会给出:
[('b', 3), ('c', 3), ('a', 7)]