Изменение формы искры RDD - KV пары - PullRequest
0 голосов
/ 03 февраля 2020

Есть ли способ изменить форму RDD искры таким образом. По сути, все наоборот: Изменение формы Spark RDD

Предположим, у меня есть:

[['id1', 'v1', 'v2', 'v3', 'v4'], ['id2', 'v1', 'v2', 'v3']]

И хочу:

[['id1','v1'],
 ['id1','v2'],
 ['id1','v3'],
 ['id1','v4'],
 ['id2','v1'],
 ['id2','v2'],
 ['id2','v3']]

Отметив, что есть различное количество переменных в каждой строке.

1 Ответ

3 голосов
/ 03 февраля 2020
rdd = sc.parallelize([
    ['id1', 'v1', 'v2', 'v3', 'v4'],
    ['id2', 'v1', 'v2', 'v3']
])
rdd2 = rdd.flatMap(lambda x: [[x[0], y] for y in x[1:]])
rdd2.collect()
>>>
[['id1', 'v1'],
 ['id1', 'v2'],
 ['id1', 'v3'],
 ['id1', 'v4'],
 ['id2', 'v1'],
 ['id2', 'v2'],
 ['id2', 'v3']]
...