我使用的是Spark 2.3.0
当我在dataframe和日志中使用foreach
时,我可以在executor log中看到日志。但为什么它不能在map
方法中打印日志?
val df = Seq((0)).toDF("a")
df.foreachPartition { iterator =>
{
iterator.map { row =>
{
val LOGGER = LogManager.getLogger(getClass.getName)
Configurator.setRootLevel(Level.INFO);
LOGGER.info("Testing logger in executor")
}
}
}
} //Not printing in executor log
df.foreachPartition { iterator =>
{
iterator.foreach { row =>
{
val LOGGER = LogManager.getLogger(getClass.getName)
Configurator.setRootLevel(Level.INFO);
LOGGER.info("Testing logger in executor")
}
}
}
} //Prints executor logs
这是什么原因,有没有办法实现这一点(我正在使用Log4j2
与log42.properties
文件)?
1条答案
按热度按时间0h4hbjxa1#
foreach
是急切的,而map
是懒惰的。