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)