繁体   English   中英

Scala中的Apache Spark无法打印rdd值

[英]Apache Spark in Scala not printing rdd values

我也是Spark和Scala的新手,所以这可能是一个非常基本的问题。

我创建了一个包含4行单词的文本文件。 其余代码如下:

val data = sc.textFile("file:///home//test.txt").map(x=> x.split(" "))

println(data.collect)
println(data.take(2))
println(data.collect.foreach(println))

上面所有的“ println”命令都将产生如下输出:[Ljava.lang.String; @ 1ebec410

任何想法我怎么显示rdd的实际内容,我什至尝试了“ saveAstextfile”,它也保存了与java相同的行...

我正在将Intellij IDE用于spark scala,是的,我浏览了与此相关的其他文章,但没有帮助。 预先谢谢你

RDD的最终返回类型是RDD[Array[String]]以前,您正在打印Array[String] ,该Array[String]打印内容如下: [Ljava.lang.String;@1ebec410)因为Array的toString()方法没有被覆盖,所以它只是打印对象的HASHCODE

您可以尝试使用隐式方法toListArray[String]强制转换为List[String] ,现在您将能够看到列表中的内容,因为scala中的list的toString()方法被覆盖并显示内容

这意味着如果您尝试

data.collect.foreach(arr => println(arr.toList))

这将向您显示内容或@Raphael建议使用data.collect().foreach(arr => println(arr.mkString(", ")))这也将起作用,因为arr.mkString(", ")将转换将数组转换为String,然后将每个元素分隔为,

希望这可以清除您的疑问谢谢

data的类型为RDD[Array[String]] ,您打印的是Array[String]toString[Ljava.lang.String;@1ebec410 ),请尝试以下操作:

data.collect().foreach(arr => println(arr.mkString(", ")))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM