gpt4 book ai didi

pyspark - 如何在pyspark的rdd中按一列分组?

转载 作者:行者123 更新时间:2023-12-04 00:33:43 28 4
gpt4 key购买 nike

pyspark 中的 rdd 由每个列表中的四个元素组成:

[id1, 'aaa',12,87]
[id2, 'acx',1,90]
[id3, 'bbb',77,10]
[id2, 'bbb',77,10]
.....

我想按第一列中的 id 进行分组,并获得其他三列的聚合结果:例如 => [id2,[['acx',1,90], ['bbb ',77,10]...]]我怎样才能实现它?

最佳答案

spark.version
# u'2.2.0'

rdd = sc.parallelize((['id1', 'aaa',12,87],
['id2', 'acx',1,90],
['id3', 'bbb',77,10],
['id2', 'bbb',77,10]))

rdd.map(lambda x: (x[0], x[1:])).groupByKey().mapValues(list).collect()

# result:

[('id2', [['acx', 1, 90], ['bbb', 77, 10]]),
('id3', [['bbb', 77, 10]]),
('id1', [['aaa', 12, 87]])]

或者,如果你更喜欢列表,你可以在 mapValues 之后再添加一个 map 操作:

rdd.map(lambda x: (x[0], x[1:])).groupByKey().mapValues(list).map(lambda x: list(x)).collect()

# result:

[['id2', [['acx', 1, 90], ['bbb', 77, 10]]],
['id3', [['bbb', 77, 10]]],
['id1', [['aaa', 12, 87]]]]

关于pyspark - 如何在pyspark的rdd中按一列分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46930791/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com