2015-03-31 2 views
-2

теперь у меня есть два РДУ, во-первых, как этотКак в объединении двух РДУ

1,2

3,4

5,6

, а другой, как это

7,8

9,10

11,12

теперь я хочу, чтобы союз этих двух РДУ как этот

1,2,7,8

3,4,9,10

5,6,11 , 12

как я могу это сделать? rdd.union не может получить этот результат

+0

Было бы лучше, если бы вы объяснить 'rdd' и вставить часть своего кода Вот. –

ответ

2

Если вы можете гарантии, что два РДУ имеют одинаковое число элементов и разделы, вы можете достичь желаемого результата с rdd.zip, а затем повторно формировать получившиеся пары:

rdd1.zip(rdd2).map{case ((a1,a2),(b1,b2))=> (a1,a2,b1,b2)} 

Если два RDD отличаются количеством элементов или разделов, вам понадобится ключ, чтобы присоединиться к ним. Индексация их не очень эффективным, но будет служить цели, хотя решение предметно-специфические (если таковые имеются) будет намного лучше:

val indexed1 = rdd1.zipWithIndex.map(tuple => tuple.swap) 
val indexed2 = rdd2.zipWithIndex.map(tuple => tuple.swap) 

val joined = indexed1.join(indexed2) 
val result = joined.map{case (k,((a1,a2),(b1,b2))) => (a1,a2,b1,b2)} 
+0

спасибо за ваш ответ –

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