spark rdd元素println
1.spark api主要分两种:转换操作和行动操作。如果在转化操作中println spark打印了 我也看不到。
val result = sqlContext.sql(sql) val resultRdd = result.rdd.map(x => { //不能print,即使print了也看不到 })
2.打印RDD的元素
一个常用的打印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)