给定RDD{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
由于
答案 0 :(得分:2)
夫妻俩:
尝试:
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
中,而不是相反。