当我尝试使用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()确实应该是。但是我得到不同的输出。
我假设你的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))