Idea是一款非常优秀的Java集成开发环境,提供了丰富的功能和插件来方便开发人员进行开发工作。在使用Idea开发Spark项目时,常常需要在控制台调整日志等级来查看特定程序的日志输出情况。下面将介绍如何在Idea控制台中调整Spark的日志等级。

1. 修改spark-submit脚本

在使用Idea进行Spark开发时,首先需要修改spark-submit脚本,以便在控制台中输出详细的日志信息。打开spark-submit脚本文件,一般位于Spark安装目录的bin文件夹下,可以使用文本编辑器或者IDE来编辑该文件。找到LOG_THRESHOLD变量的设置,将其修改为"DEBUG"或"TRACE",这样就可以输出更详细的日志信息了。

Welcome to

export SPARK_HOME=...
export PYSPARK_PYTHON=...
export SPARK_PRINT_LAUNCH_COMMAND=...
export SPARK_PRINT_LAUNCH_COMMAND_OPTS=...
export SPARK_PRINT_LAUNCH_COMMAND_WITH_QUOTED_ARGS=...
export SPARK_LOG_DIR=...
export SPARK_SSH_FOREGROUND=...
export SPARK_DAEMON_JAVA_OPTS=...
export SPARK_SCALA_VERSION=...1

修改为:

Welcome to

export SPARK_HOME=...
export PYSPARK_PYTHON=...
export SPARK_PRINT_LAUNCH_COMMAND=...
export SPARK_PRINT_LAUNCH_COMMAND_OPTS=...
export SPARK_PRINT_LAUNCH_COMMAND_WITH_QUOTED_ARGS=...
export SPARK_LOG_DIR=...
export SPARK_SSH_FOREGROUND=...
export SPARK_DAEMON_JAVA_OPTS=...
export SPARK_SCALA_VERSION=...2

2. 修改log4j.properties配置文件

接下来需要修改Spark的log4j.properties配置文件,该文件用于配置Spark的日志输出级别。该文件一般位于Spark安装目录的conf文件夹下,同样可以使用文本编辑器或者IDE来编辑该文件。找到log4j.rootCategory变量的设置,将其修改为所需要的日志级别,比如"DEBUG"、"INFO"、"WARN"等。

# Set everything to be logged to the console
log4j.rootCategory=INFO, console

# Settings to quiet third party logs that are too verbose
log4j.logger.org.eclipse.jetty=WARN
log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper=WARN
log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=WARN
log4j.logger.org.apache.parquet=ERROR...1

修改为:

# Set everything to be logged to the console
log4j.rootCategory=DEBUG, console

# Settings to quiet third party logs that are too verbose
log4j.logger.org.eclipse.jetty=WARN
log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper=WARN
log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=WARN
log4j.logger.org.apache.parquet=ERROR...2

3. 在SparkConf中设置日志级别

除了上面的方法,还可以在SparkConf对象中设置日志级别。在Spark应用程序中,可以通过创建SparkConf对象并设置相关属性来控制日志输出级别。以下是一个示例代码:

import org.apache.spark.SparkConf;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;

public class SparkApp {
    public static void main(String[] args) {
        SparkConf conf = new SparkConf().setAppName("SampleApp").setMaster("local");
        
        // 设置日志级别为DEBUG
        Logger.getRootLogger().setLevel(Level.DEBUG);
        ...
    }
}

通过调用Logger.getRootLogger().setLevel(Level.DEBUG)方法可以将日志级别设置为DEBUG,这样就能输出更详细的日志信息。