2016-12-13 2 views
0

Помогите, у меня есть два RDD, я хочу объединиться с одним RDD. Это мой код.Как слить два RDD на один RDD

val us1 = sc.parallelize(Array(("3L"), ("7L"),("5L"),("2L"))) 
val us2 = sc.parallelize(Array(("432L"), ("7123L"),("513L"),("1312L"))) 
+1

Каков ваш ожидаемый результат и что вы пробовали? – mtoto

+0

3L 7L 5л 2L 432L 7123L 513L 1312L – Simon

+0

я хочу этот RDD, означает две РДД сливаются в одну РДУ – Simon

ответ

2

Просто используйте союз:

val merged = us1.union(us2) 

Документация here

Shotcut в Scala является:

val merged = us1 ++ us2 
+0

большое спасибо !! – Simon

+0

@Simon [Пожалуйста, поддержите или принимайте ответы, а не оставляйте комментарии благодарности] (http://stackoverflow.com/help/someone-answers) –

1

Вам нужен RDD.union Они не присоединиться на ключ. Союз действительно ничего не делает сам по себе, поэтому он накладные. Обратите внимание, что объединенный RDD будет иметь все разделы исходных RDD, поэтому вы можете захотеть объединиться после объединения.

val x = sc.parallelize(Seq((1, 3), (2, 4))) 
val y = sc.parallelize(Seq((3, 5), (4, 7))) 
val z = x.union(y) 
z.collect 
res0: Array[(Int, Int)] = Array((1,3), (2,4), (3,5), (4,7)) 

API

def++(other: RDD[T]): RDD[T] 

Вернуться объединение этого РДУ и другой.

def++ API

def union(other: RDD[T]): RDD[T] 

Вернуться объединение этого РДУ и другой. Любые идентичные элементы появятся несколько раз (используйте для этого исключение .distinct()).

def union API

+0

Почему вы хотите объединиться после этого? Если два входных RDD правильно разбиты на разделы, то объединение RDD тоже будет. – Tim

+0

Просто для производительности и для обновления раздела .s не является мандатом, но может быть сделано. Он возвращает новое RDD, которое сводится к разделам numPartitions. –

+0

Правильно, я понимаю, что делает слияние. Но если ваши разделы имеют правильный размер в обоих входных RDD, выполнение coalesce приведет к слишком большим разделам (особенно если вы используете параметр shuffle = false) – Tim

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