Какая функция в spark используется для объединения двух rdds по клавишам
предположим, у меня есть следующие два RDDs со следующими значениями пары ключей.
rdd1 = [ (key1, [value1, value2]), (key2, [value3, value4]) ]
и
rdd2 = [ (key1, [value5, value6]), (key2, [value7]) ]
Теперь я хочу присоединиться к ним по ключевым значениям, поэтому, например, я хочу вернуть следующее
ret = [ (key1, [value1, value2, value5, value6]), (key2, [value3, value4, value7]) ]
как я могу это сделать, в spark с помощью Python или Scala? Один из способов - использовать join, но join создаст кортеж внутри кортежа. Но я хочу иметь только один кортеж за пару.
2 ответов
Я бы объединил два RDDs и reduceByKey, чтобы объединить значения.
(rdd1 union rdd2).reduceByKey(_ ++ _)
просто использовать join
а то map
результирующий rdd.
rdd1.join(rdd2).map(case (k, (ls, rs)) => (k, ls ++ rs))