【问题标题】:Only write my own messages in the log pyspark仅在日志 pyspark 中写入我自己的消息
【发布时间】:2020-07-06 09:50:13
【问题描述】:

我想在每次脚本运行结束时导出一个日志文件,其中只有我在使用 Pyspark 时的打印语句。

到目前为止,我设法将我的打印语句记录到 log4j 中,我可以使用集群中的 logging 参数指定日志导出路径(在集群配置中)并使用下面的代码导出到 S3。但是,我也收到了很多我不感兴趣的额外消息。使用:

log4jLogger = sc._jvm.org.apache.log4j
LOGGER = log4jLogger.LogManager.getLogger(__name__)
sc.setLogLevel("INFO")
LOGGER.info("pyspark script logger initialized")

我明白了:

20/07/06 09:45:37 INFO DriverCorral: DBFS health check ok
20/07/06 09:45:49 INFO DriverCorral: Metastore health check ok
20/07/06 09:46:05 INFO ProgressReporter$: Added result fetcher for ...
20/07/06 09:46:05 INFO __main__: pyspark script logger initialized
20/07/06 09:46:05 INFO ProgressReporter$: Removed result fetcher for ...

基本上,我只想在我的日志中打印:

20/07/06 09:46:05 INFO __main__: pyspark script logger initialized

【问题讨论】:

  • 不确定是否可以这样做,但您可以尝试将日志级别设置为 WARN 并在 WARN 级别打印您的消息,除了您的消息之外,只会显示警告。
  • 您可以尝试禁用不需要的记录器。像这样:dc_logger = getLogger('DriverCorral') dc_logger.disabled = true
  • 你能检查一下下面的python logger模块吗?

标签: python logging pyspark


【解决方案1】:

你能试试下面的 Python Logger 模块吗

import logging

logger = logging.getLogger(__name__)
logger.info('pyspark script logger initialized.')

【讨论】:

  • 不幸的是,即使上面的代码运行良好,驱动程序的日志中也没有出现任何消​​息。这个包可能不适用于火花集群。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多