我有这样的RDD:
[('anger', 166),
('lyon', 193),
('marseilles_1', 284),
('nice', 203),
('paris_2', 642),
('paris_3', 330),
('troyes', 214),
('marseilles_2', 231),
('nantes', 207),
('orlean', 196),
('paris_1', 596),
('rennes', 180),
('toulouse', 177)]
我需要将paris_1
,paris_2
,paris_3
合并到一行paris
。
我完全不知道如何继续,也没有找到任何答案。
你能帮助我吗?
答案 0 :(得分:2)
您可以使用正则表达式从当前键值获取城市名称,然后按键减少:
import re
rdd\
.map(lambda l: (re.sub('[_0-9]', '',l[0]), l[1]))\
.reduceByKey(lambda x,y: x + y)\
[('anger', 166),
('lyon', 193),
('nice', 203),
('paris', 1568),
('troyes', 214),
('marseilles', 515),
('nantes', 207),
('orlean', 196),
('rennes', 180),
('toulouse', 177)]