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)) 但是我该怎么打印
答案 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