如何在pyspark作业中设置logLevel

flvlnr44  于 2023-05-16  发布在  Spark
关注(0)|答案(2)|浏览(245)

我正在尝试在pyspark作业中设置日志级别。我没有使用sparkshell,所以我不能只做它建议的事情并调用sc.setLogLevel(newLevel),因为我没有sc对象。
很多消息来源说只需修改log4j.properties,但我不知道在哪里找到/放置该文件。我在虚拟环境中使用了pip install pyspark,所以我没有设置的$SPARK_HOME环境变量(源代码通常说log4j.properties在$SPARK_HOME中)。
我希望我能以编程方式调用它,但我不知道在哪里调用setLogLevel。现在我的安装代码是这样的:

spark = SparkSession.builder.master("local").appName("test-mf").getOrCreate()
jhkqcmku

jhkqcmku1#

SparkSession对象有一个属性来获取SparkContext对象,在其上调用setLogLevel确实会更改正在使用的日志级别:

spark = SparkSession.builder.master("local").appName("test-mf").getOrCreate()
spark.sparkContext.setLogLevel("DEBUG")
9nvpjoqh

9nvpjoqh2#

为了抑制getOrCreate发出的消息,需要使用appName(...).config(...).config(...).getOrCreate()将配置选项传递给sparksession构建器
使用以下配置属性覆盖默认的log4j属性:

...
    .config("spark.driver.extraJavaOptions", "-Dlog4j.configuration=file:custom_log4j.properties")

    ...
    .config("spark.executor.extraJavaOptions", "-Dlog4j.configuration=file:custom_log4j.properties")

下面的custom_log4j.properties文件足以使我的系统上的警告静音:

# Set everything to be logged to the console
log4j.rootCategory=ERROR, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n

# Set the log level to ERROR for everything
log4j.logger.org.apache=ERROR

相关问题