2015-10-16 3 views
3

У меня есть RDD с кортежами быть в форме:PySpark - Преобразование RDD в ключевые пары значений RDD со значениями, чтобы быть в списке

[("a1","b1","c1","d1","e1"), ("a2","b2","c2","d2","e2"), ... 

То, что я хочу, чтобы превратить это в ключ -value пара РДД, где первое поле будет первая строка (ключ), а второе поле список строк (значение), то я хочу, чтобы превратить его в форму:

[("a1",["b1","c1","d1","e1"]), ("a2",["b2","c2","d2","e2"]), ... 

ответ

6
>>> rdd = sc.parallelize([("a1","b1","c1","d1","e1"), ("a2","b2","c2","d2","e2")]) 

>>> result = rdd.map(lambda x: (x[0], list(x[1:]))) 

>>> print result.collect() 
[('a1', ['b1', 'c1', 'd1', 'e1']), ('a2', ['b2', 'c2', 'd2', 'e2'])] 

Пояснение от lambda x: (x[0], list(x[1:])):

  1. x[0] сделает первый элемент, первый элемент выход
  2. x[1:] сделает все элементы, за исключением первого, чтобы быть во втором элементе
  3. list(x[1:]) заставит что быть список , потому что по умолчанию будет кортеж
+0

Точно, что мне нужно, спасибо! – nikos

Смежные вопросы