2016-04-16 3 views
0

У меня есть следующий RDD в моем Java-коде.Apache Spark Преобразование коллекции RDD в одиночный RDD JAVA

(1, List(1596, 1617, 1929, 2399, 2674)) 
(2, List(1702, 1785, 1933, 2054, 2583, 2913)) 
(3, List(1982, 2002, 2048, 2341, 2666)) 

То, что я пытаюсь сделать, это создать еще один RDD. Содержимое должно выглядеть следующим образом. (Не обязательно в том же порядке)

1596 
1617 
1929 
2399 
2674 
1702 
1785 
1933 
2054 
2583 
2913 
1982 
2002 
2048 
2341 
2666 

Я не уверен, как преобразовать один RDD (JavaRDD<ArrayList<String>>) с коллекцией объектов для одного РДУ (JavaRDD<String>) со всеми объектами в нем. Я был бы очень признателен, если бы кто-нибудь мог указать мне на какой-то ресурс JAVA.

+1

Это будет делать в Скале. 'val rdd1 = sc.parallelize (Список ((1, Список (1596, 1617, 1929, 2399, 2674)), (2, Список (1702, 1785, 1933, 2054, 2583, 2913)), (3, Список (1982, 2002, 2048, 2341, 2666)))) val rdd2 = rdd1.flatMap (x => x._2) ' – WoodChopper

ответ

0

Вы можете сделать то же самое в Скале следующим

val data = List((1, List(1596, 1617, 1929, 2399, 2674)), 
    (2, List(1702, 1785, 1933, 2054, 2583, 2913)), 
    (3, List(1982, 2002, 2048, 2341, 2666))) 

val rdd_data = sc.parallelize(data) 
val rdd_flattened = rdd_data.flatMap((index, value) => value)