[英]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
您可以嘗試使用隱式方法toList
將Array[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.