当我尝试使用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()相同,的确如此。但是我得到了不同的输出。
答案 0 :(得分:3)
我假设您的RDD的类型为org.apache.spark.rdd.RDD[Array[String]]
。在这种情况下,first
方法的返回类型为Array[String]
,而foreach(println)
打印RDD中第一个字符串数组的元素。
但是take(5)
的返回类型为Array[Array[String]]
,foreach(println)
打印出5个元素。
要获得first
和take(5)
的相同输出,请使用
println(myRDD.first())
myRDD.take(5).foreach(println)
或
myRDD.first().foreach(println)
myRDD.take(5).foreach(_.foreach(println))