无法使用take()操作打印RDD内容

问题描述 投票:0回答:1

当我尝试使用first()动作打印RDD内容时,我可以使用foreach循环打印它。但是使用take()动作它不会打印出内容。

使用first()

myRDD.first().foreach(println)
1
2013-07-25 00:00:00.0
11599
CLOSED

使用take():

myRDD.take(5).foreach(println)
[Ljava.lang.String;@23a5818e
[Ljava.lang.String;@4715ae33
[Ljava.lang.String;@9fc9f91
[Ljava.lang.String;@1fac1d5c
[Ljava.lang.String;@108a46d6

我期望相同的输出为first()确实应该是。但是我得到不同的输出。

scala apache-spark rdd
1个回答
3
投票

我假设你的RDD是org.apache.spark.rdd.RDD[Array[String]]类型。在这种情况下,first方法的返回类型是Array[String]foreach(println)打印RDD中第一个字符串数组的元素。但take(5)的返回类型是Array[Array[String]]foreach(println)打印出5个元素。

要获得firsttake(5)的相同输出,请使用

println(myRDD.first())
myRDD.take(5).foreach(println)

要么

myRDD.first().foreach(println)
myRDD.take(5).foreach(_.foreach(println))
© www.soinside.com 2019 - 2024. All rights reserved.