2016-05-17 2 views
1

Моего входного набора выглядеть следующим образом:искра Как разбить на карте и перебирать каждый элемент

100,Jack,CEO,10000,IT 
101,John,CEO,20000,CS 

И я хочу, чтобы разделить каждую строку и напечатать все столбцы, используя существующий API в искре.

JavaRDD<Object> splitRdd = textFileRDD.map(x -> x.split(",")); 

Как я итерацию и напечатать все значения

ответ

4

Я думаю, что вы можете сделать это так:

JavaRDD<String> p = textFileRDD.flatMap(x -> Arrays.asList(x.split(","))); 
p.foreach(x -> System.out.println(x)); 

Это будет печатать все colums.

+0

... Хм, который будет печатать каждое значение на отдельной строке, а не сохраняя значения из одной линии вместе, но, возможно, это то, что искали OP? –

+0

yup..but ответ в scala i guess..am i correct?/ – Aman

+0

да, вы правы :) Но преобразование в Java должно быть тривиальным. –

5

Итак, если вы работаете в реальной распределенной среде (кластере со многими машинами), вам нужно сначала позвонить, а затем вызвать println по собранным результатам. В противном случае это просто будет напечатано на stdout на разных машинах кластера, и вы не увидите его на драйвере. Если вы работаете только локально, вы можете использовать foreach, так как все будет записано на ту же станду.

В искрового-оболочки на кластере, я хотел бы сделать:

textFileRDD.map(line => line.split(",")).collect.foreach(array => println(array.mkString(","))) 

, который будет выводить следующее:

100,Jack,CEO,10000,IT 
101,John,CEO,20000,CS 
Смежные вопросы