Не удается напечатать содержимое RDD с действием take () - PullRequest
0 голосов
/ 06 сентября 2018

Когда я пытаюсь распечатать содержимое RDD с помощью действия first(), я могу напечатать его с циклом 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 (), действительно так и должно быть. Но я получаю другой вывод.

1 Ответ

0 голосов
/ 06 сентября 2018

Я предполагаю, что ваш СДР имеет тип org.apache.spark.rdd.RDD[Array[String]]. В этом случае тип возвращаемого значения метода first равен Array[String], а foreach(println) печатает элементы первого массива строк в СДР. Но тип возврата 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))
...