如何防止记录pyspark'回答'和'命令发送'消息

时间:2015-12-13 07:26:18

标签: python logging pyspark

我正在使用pyspark和pyspark的python日志记录DEBUG级别的消息充斥着我的日志文件,并显示了示例。我该如何防止这种情况发生?一个简单的解决方案是将日志级别设置为INFO,但我需要记录自己的python DEBUG级别消息

2015-12-13 15:13:32 4906 DEBUG   : Command to send: j
i
rj
org.apache.spark.SparkConf
e

2015-12-13 15:13:32 4906 DEBUG   : Answer received: yv
2015-12-13 15:13:32 4906 DEBUG   : Command to send: j
i
rj
org.apache.spark.api.java.*
e

2015-12-13 15:13:32 4906 DEBUG   : Answer received: yv
2015-12-13 15:13:32 4906 DEBUG   : Command to send: j
i
rj
org.apache.spark.api.python.*
e

5 个答案:

答案 0 :(得分:1)

您可以单独设置每个记录器的日志记录级别

 pyspark_log = logging.getLogger('pyspark')
 pyspark_log.setLevel(logging.ERROR)

答案 1 :(得分:1)

logging.basicConfig(level=logging.DEBUG)
logging.getLogger('py4j').setLevel(logging.INFO) # use setLevel(logging.ERROR) is also fine
logging.getLogger('pyspark')

logging.info('Task is successful.')

答案 2 :(得分:0)

我遇到了同样的问题,我使用了以下方法,并且一切正常。

pyspark_log = logging.getLogger('pyspark').setLevel(logging.ERROR)
py4j_logger = logging.getLogger("py4j").setLevel(logging.ERROR)
matplotlib_logger = logging.getLogger("matplotlib").setLevel(logging.ERROR)

我也得到了一些matplotlib lib日志,因此我也更改了matplotlib记录器级别,但是如果您没有该问题,则可以删除该行。

答案 3 :(得分:0)

关键组成部分是“ py4j”。您只需要在程序的开头添加一行代码即可:

py4j_logger = logging.getLogger("py4j").setLevel(logging.INFO)

答案 4 :(得分:0)

控制 pyspark 和 py4j 日志记录的最佳方法是设置以下代码段:

import logging
logging.getLogger("py4j").setLevel(<pyspark-level>)
logging.getLogger('pyspark').setLevel(<py4j-level>)
logger = logging.getLogger('pyspark')

对于你的情况,你应该写:

import logging
logging.getLogger("py4j").setLevel(logging.DEBUG)
logging.getLogger('pyspark').setLevel(logging.WARNING)
logger = logging.getLogger('pyspark')