2016-03-27 3 views
0

Дано RDD{String], где каждый элемент на линии разделителями с | характера, например:трансформирующий РДД [String] в РДУ [Array [String]]

aaa|bbb|ccc|ddd 

Что такое правильный способ преобразования это в RDD[Array[String], так что выше, будет представлен в виде Array("aaa", "bbb", "ccc", "ddd")

следующая мысль:

val rddAsArray = rdd.map { x => Array(x.split("""\|""")) } 

не работает. в

println(rddAsArray.foreach { _.mkString(",") }) 

только печатает: [[Ljava.lang.String;@4096711f

Благодаря

ответ

2

пару вещей:

Try:

val rddAsArray = rdd.map(x => x.split("\\|")) 

, как вы делали это вы создавали RDD[Array[Array[String]]] когда все, что вам нужно, - RDD[Array[String]].

И ваш println не делает то, что вы думаете. Попробуйте:

rddAsArray.take(1).foreach(l => println(l.mkString(","))) 

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

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