Создание нового rdd из двух разных rdds - PullRequest
0 голосов
/ 03 мая 2018

У меня есть два числа следующим образом:

rdd1=sc.parallelize([(('a','b'),10),(('c','d'),20)])
rdd2=sc.parallelize([('a',2),('b',3),('c',4)])

Мне нужно создать новый rdd следующим образом: (значение для ('a', 'b') => value(a,b)/value(a) => 10/2

[(('a','b'), 5.0), (('c','d'), 5.0)]

1 Ответ

0 голосов
/ 03 мая 2018

Ваше требование говорит, что вы хотите, чтобы число rdd1 делилось на значение из rdd2, которое соответствует ключу rdd2 с первым значением ключа rdd1 .

Если мое понимание верно, то ваше требование можно выполнить, выполнив следующее, где rdd1 преобразуется, чтобы сделать первое значение ключом, чтобы можно было выполнить соединение между двумя rdds.

rdd1.map(lambda x: (x[0][0], x)).join(rdd2).map(lambda x: (x[1][0][0], float(x[1][0][1]/x[1][1])))
#[(('a', 'b'), 5.0), (('c', 'd'), 5.0)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...