2015-10-04 113 views
1

當在本地模式下運行,這將打印日誌到控制檯:Spark在集羣模式下打印沒有登錄

object Util extends Logging { 

    val df: DataFrame = ??? 

    df.select("id", "name") 
     .rdd.foreach(r => log.warn("here")) 
} 

但在集羣模式下運行時,它沒有。我相信這是因爲日誌命令在工作節點而不是主節點上執行。如果使用println(...)

同樣的事情,我怎麼能有日誌結果在控制檯中顯示出來?

回答

1

如果你運行一個集羣上你的工作,你首先應該collectrdd數據。

rdd.collect().foreach(r ⇒ log.warn("here")) 

但是可能它不是一個好主意,收集所有rdd,所以您可以使用take功能,讓RDD元素的少數打印。

+0

我只記得「收集」將數據發送回司機 - 所以此工程。但它不是一個完整的解決方案,因爲有時我們想記錄永遠不會被髮送回驅動程序的中間體。 – BAR

+0

@BAR在我看來,有兩個可能的決定:寫入文件,或遍歷分區,收集每個和打印RDDS,你有什麼感想? – DaunnC

+0

只記得:做一個自定義的蓄能器,只送什麼,我們要打印 – DaunnC

相關問題