Pyspark将字典列表(piplelinedRDD)展平到单个字典中并按键按值分组

2024-03-29 08:26:41 发布

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

我有一个piplelinedRDD中存储的字典列表,如下所示:

[{ZDX: ID_42, XCZ: ID_32, ZXD: ID_434}, {ZDX: ID_69, XXF: ID_30, HGL: ID_239, XCZ: ID_01}]

我想要一个看起来像这样的输出

^{pr2}$

因为它存储在pipelinedRDD中,所以字典也不可编辑。在


Tags: id编辑列表字典zxdpr2pipelinedrddzdx
1条回答
网友
1楼 · 发布于 2024-03-29 08:26:41

我用整数作为字典的值,如果你有字符串,过程是一样的。在

启动RDD

>>> rdd = sc.parallelize([{'ZDX': 42, 'XCZ': 32, 'XD': 434}, {'ZDX': 69, 'XXF': 30, 'HGL': 239, 'XCZ': 1}])

创建一个包含元组的RDD,该元组表示您的对(键、值):

^{pr2}$

按键分组:

>>> groupedItems = items.groupByKey().mapValues(list)
>>> groupedItems.take(groupedItems.count())
>>> [('XCZ', [32, 1]),('ZDX', [42, 69]), ('XXF', [30]),('HGL', [239]), ('XD', [434])]

使用collectAsMap从RDD中获取词典

>>> d = groupedItems.collectAsMap()
>>> {'HGL': [239], 'XCZ': [32, 1], 'XD': [434], 'XXF': [30], 'ZDX': [42, 69]}

相关问题 更多 >