Log4j2在执行器日志中的foreach中显示日志,但在执行器日志中的map方法中不显示

2mbi3lxu  于 2022-11-06  发布在  其他
关注(0)|答案(1)|浏览(189)

我使用的是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

这是什么原因,有没有办法实现这一点(我正在使用Log4j2log42.properties文件)?

0h4hbjxa

0h4hbjxa1#

foreach是急切的,而map是懒惰的。

相关问题