Печать outputByKey на выходе - PullRequest
0 голосов
/ 26 апреля 2019

Как напечатать вывод после ReduByKey

Я пробовал такие вещи, как totalsByAge.foreach {i => println ("Value =" + i)}

У меня есть пара строк кода val totalsByAgeEntry = rdd.mapValues ​​(x => (x, 1))

val totalsByAge = totalsByAgeEntry.reduceByKey ((x, y) => (x._1 + y._1, x._2 + y._2))

Я хочу напечатать кортеж, который получается при вызове reduByKey. Я не печатаю вывод после того, как (x._1 + y._1, x._2 + y._2) вычислено.

Я знаю, что данные, созданные после lowerByKey, выглядят примерно так: (Х, ((x1, y1), (х2, у2)) Но как я могу напечатать это

1 Ответ

2 голосов
/ 26 апреля 2019

Это потому, что исполнители выполняют reduceByKey, а println выводит выходные данные в стандартный вывод исполнителя. Стандартный вывод исполнителя обычно доступен на master.application.ip.address:8080.

Если вы хотите распечатать / просмотреть ваши данные, вы можете сделать это несколькими способами. Например: 1) применяя totalByAge.take(numberOfLines).foreach(println); 2) путем сбора (.collect()) СДР водителю; и 3) путем преобразования СДР в кадр данных с последующим применением .show().

val rdd: RDD[(Int, Int)] = 
    sparkContext
        .parallelize(Vector(1, 2, 3))
        .map(i => (i, 1))
        .reduceByKey(_ + _)
rdd.take(10).foreach(println) // take the first 10 lines and print them
rdd.collect().foreach(println) // centralize the entire RDD and print it
import spark.implicits._
rdd.toDF().show(10) // conver to dataframe and show the first 10 lines
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...