2015-10-04 64 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

相关问题