打印reduceByKey输出

时间:2019-04-26 13:52:57

标签: scala apache-spark

reduceByKey之后如何打印输出

我尝试过类似的事情 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))

我想打印在调用reduceByKey时得到的元组。计算(x._1 + y._1,x._2 + y._2)后,我不打印输出。

我知道reduceByKey之后创建的数据是这样的: [x,(((x1,y1),(x2,y2)) 但是我该怎么打印

1 个答案:

答案 0 :(得分:1)

这是因为reduceByKey由执行者执行,而println将输出打印到执行者的标准输出中。执行器的标准输出通常位于master.application.ip.address:8080

如果要打印/查看数据,可以采用几种方法。例如:1)通过应用totalByAge.take(numberOfLines).foreach(println); 2)通过收集(.collect())RDD给驱动程序; 3)通过将RDD转换为数据帧,然后应用.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