如何使用pysp中的reduceByKey向列表追加元素

2024-10-02 02:37:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有点被困在pyspark中解决一个问题。在使用map函数进行相同的计算之后,我得到了一个RDD,它包含一个dict列表,如下所示:

[{key1: tuple1}, {key1: tuple2}....{key2: tuple1}, {keyN: tupleN}] 

我假装为每个键附加一个列表,其中包含具有相同键的所有元组,得到如下结果:

^{pr2}$

我认为一个例子更能说明问题:

[{0: (0, 1.0)}, {0: (1, 0.0)}, {1: (0, 0.0)}, {1: (1, 1.0)}, {2:(0,0.0)}... ]

我想得到这样一份口述清单:

[{0: [(0, 1.0), (1, 0.0)}, {1: [(0, 0.0), (1, 1.0)]}, {2:[(0,0.0),...]},...]

我尽量避免使用“combineByKey”函数,因为它持续的时间太长了,有没有可能用“reduceByKey”来实现呢??在

非常感谢大家。在


Tags: 函数map列表dictpyspark元组key2key1
1条回答
网友
1楼 · 发布于 2024-10-02 02:37:18

这里有一个不使用reduceByKey而只使用python内置函数的解决方案:

from collections import defaultdict


inp = [{0: (0, 1.0)}, {0: (1, 0.0)}, {1: (0, 0.0)},
       {1: (1, 1.0)}, {2: (0, 0.0)}]

out = defaultdict(list)

for v in inp:
    for k, v1 in v.iteritems():
        out[k].append(v1)

out = [{k: v} for k, v in out.iteritems()]
print out

相关问题 更多 >

    热门问题