spark rdd元素println

1.spark api主要分两种:转换操作和行动操作。如果在转化操作中println spark打印了 我也看不到。

val result = sqlContext.sql(sql)
val resultRdd = result.rdd.map(x => {
    //不能print,即使print了也看不到
})

2.打印RDD的元素

参考:https://strongyoung.gitbooks.io/spark-programming-guide/rdds/rdd_operations/printing_elements_of_an_rdd.html

一个常用的打印RDD里的元素的方法是,使用rdd.foreach(println)或rdd.map(println)。在一个单机环境下,这将能产生期望的输出,并且打印所有的RDD的元素。然而,在一个集群模式中,对stdout的输出会调用执行器的stdout,从而把输出写到执行器的标准输出(即stdout),而不是驱动程序,所以,在驱动程序的标准输出中不会显示这些。要在驱动程序中打印所有的元素,可以使用collect()方法,先将RDD传输到驱动程序节点,然后,使用:

rdd.collect().foreach(println)

这会引起驱动程序在内存外运行,尽管,因为collect()获取整个RDD到一台单机上。如果你只需要打印RDD的部分元素,一个更安全的方法就是使用take():

rdd.take(100).foreach(prinltn)

 

posted @ 2019-10-08 10:33  ~清风煮酒~  阅读(1936)  评论(0编辑  收藏  举报