Писпарк |Преобразование СДР из ключа со списком значений> значений со списком ключей - PullRequest
0 голосов
/ 28 ноября 2018

В pyspark, как преобразовать входной RDD, где Каждый ключ имеет список значений , в выходной RDD, где Каждое значение имеет список ключей, которым он принадлежит ?

Вход

[(1, ['a','b','c','e']), (2, ['b','d']), (3, ['a','d']), (4, ['b','c'])]

Выход

[('a', [1, 3]), ('b', [1, 2, 4]), ('c', [1, 4]), ('d', [2,3]), ('e', [1])]

1 Ответ

0 голосов
/ 28 ноября 2018

Сначала сгладьте и поменяйте значение ключа на rdd, а затем groupByKey:

rdd.flatMap(lambda r: [(k, r[0]) for k in r[1]]).groupByKey().mapValues(list).collect()
# [('a', [1, 3]), ('e', [1]), ('b', [1, 2, 4]), ('c', [1, 4]), ('d', [2, 3])]
...