2016-03-27 12 views
0

ライン上の各要素は、例えば|文字で区切られRDD{String]、考える:変換するための正しい方法は何ですかの変換RDD [文字列] [アレイ[文字列]]

aaa|bbb|ccc|ddd 

をそれRDD[Array[String]、上記Array("aaa", "bbb", "ccc", "ddd")

次のアイデアとして表現されるように:

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

はうまく動作しません。 [[Ljava.lang.String;@4096711f

おかげ

答えて

2

カップルの事:

試してください:あなたはRDD[Array[Array[String]]]たときに作成されたことをやっていた

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

方法

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

のみプリントとして あなたが望むのは0123です。

あなたのprintlnは、あなたがそう考えるとはしません。試してみてください:

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

あなたのドライバーへRDDを持参するtake()を必要とする - それ以外printlnあなたはおそらく見ることはできませんこれは、あなたのエグゼキュータのstdoutにその結果を印刷します。ドライバーのstdoutに印刷する必要があります。したがって、take()に印刷する必要があります。それ以外の場合はprintlnforeachに入れ子にする必要があります。