2015-07-27 3 views
1

У меня есть два RDD.Объединить два RDD в Spark Scala

rdd1 = (String, String)

key1, value11 
key2, value12 
key3, value13 

rdd2 = (String, String)

key2, value22 
key3, value23 
key4, value24 

мне нужно сформировать другой RDD с объединенными строками из rdd1 и rdd2, вывод должен выглядеть как:

key2, value12 ; value22 
key3, value13 ; value23 

Таким образом, в основном это ничего, но принимая пересечение ключей rdd1 и rdd2 и т присоединитесь к их ценностям. ** Значения должны быть в порядке, т.е. значение (rdd1) + значение (rdd2), а не наоборот.

ответ

2

Я думаю, что это может быть то, что вы ищете:

join(otherDataset, [numTasks]) 

При вызове наборов данных типа (K, V) и (K, W), возвращает набор данных (K, (V, W)) со всеми парами элементов для каждого ключа. Внешние соединения поддерживаются через leftOuterJoin, rightOuterJoin и fullOuterJoin.

See the associated section of the docs

+0

Я думаю (rdd1 присоединиться rdd2) работает, а затем карта может быть использована для получения данных в нужном формате. Спасибо – user2200660

+0

(rdd1 join rdd2) доза НЕ работает в Spark 2.0.2 – 7kemZmani

+0

Просто протестировал это в сообществе сообщества Databricks, на искровом кластере 2.0.2-db, выполняющем scala 2.11. '(sc.parallelize (List ((1,« a »), (2,« b »), (3,« c »))) join sc.parallelize (List ((1,« z »), (2 , "x"), (3, "y")))). collect(). foreach (println) 'создает 3 элемента rdd с ожидаемыми кортежами. –

Смежные вопросы