Подтвердить что ты не робот

Какая функция в искре используется для объединения двух RDD по ключам

Скажем, у меня есть следующие два RDD со следующими значениями пары ключей.

rdd1 = [ (key1, [value1, value2]), (key2, [value3, value4]) ]

и

rdd2 = [ (key1, [value5, value6]), (key2, [value7]) ]

Теперь я хочу присоединиться к ним по ключевым значениям, поэтому, например, я хочу вернуть следующие

ret = [ (key1, [value1, value2, value5, value6]), (key2, [value3, value4, value7]) ] 

Как я могу это сделать, используя искрообразование с помощью Python или Scala? Один из способов - использовать join, но join создаст кортеж внутри кортежа. Но я хочу иметь только один кортеж для пары значений ключа.

4b9b3361

Ответ 1

Я бы объединил два RDD и к reduceByKey, чтобы объединить значения.

(rdd1 union rdd2).reduceByKey(_ ++ _)

Ответ 2

Просто используйте join, а затем map полученный rdd.

rdd1.join(rdd2).map(case (k, (ls, rs)) => (k, ls ++ rs))