2017-10-15 1 views
0

J'ai un RDD comme ceci:Joignez-vous à des lignes spécifiques dans un 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)] 

je dois fusionner paris_1, paris_2, paris_3 dans une ligne appelée paris.

Je n'ai strictement aucune idée de la façon de procéder et je n'ai trouvé aucune réponse.

Pouvez-vous m'aider?

+0

Est-ce que vous voulez faire une réduire au-dessus de cette RDD? Mais avec quelques touches non? –

Répondre

2

Vous pouvez utiliser une expression régulière pour obtenir les noms de la ville de vos valeurs clés actuelles, puis réduire par clé:

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)]