如何减少Spark中的嵌套字典

时间:2016-11-17 19:31:36

标签: apache-spark pyspark

(在' pyspark')我有一个包含多个词典的RDD。反过来,这些词典中的每一个都包含多个词典。它看起来像这样:

label1 : {tag1, : count = 2, tag2: count = 3}, {tag2 : count = 3}, {tag3 : count = 1}, ...
label2 : {tag1, : count = 2, tag3: count = 2}, {tag2 : count = 5}, {tag4 : count = 3}, ...
.
.

鉴于这种结构,我希望能够减少"字典所以结果有以下形式:

label1 : {tag1 : count = 2}, {tag : count = 6}, {tag3 : count = 1} ...
label2 : {tag1 : count = 2}, {tag2 : count = 5}, {tag3 : count = 2}, {tag4 : count = 3}...
.
.
.

我有一种感觉,这类似于减少'或者'结合'或者' groupby'但我很难找到合适的功能。你能指点一下Spark中的哪个函数可以完成这个任务吗?谢谢!

1 个答案:

答案 0 :(得分:0)

这应该将你的词典迭代器压缩成一个大词典:

def combine(iter):
    bigDict = dict()
    for littleDict in iter:
        for key, value in littleDict.iteritems():
            bigDict[key] = value
    return bigDict
rdd.map(combine)