如何设置默认的火花日志记录级别?

Tha*_*Guy 10 apache-spark pyspark

我从我自己的工作站上的pycharm启动pyspark应用程序到8节点集群.此群集还具有以spark-defaults.conf和spark-env.sh编码的设置

这就是我获取spark上下文变量的方法.

spark = SparkSession \
        .builder \
        .master("spark://stcpgrnlp06p.options-it.com:7087") \
        .appName(__SPARK_APP_NAME__) \
        .config("spark.executor.memory", "50g") \
        .config("spark.eventlog.enabled", "true") \
        .config("spark.eventlog.dir", r"/net/share/grid/bin/spark/UAT/SparkLogs/") \
        .config("spark.cores.max", 128) \
        .config("spark.sql.crossJoin.enabled", "True") \
        .config("spark.executor.extraLibraryPath","/net/share/grid/bin/spark/UAT/bin/vertica-jdbc-8.0.0-0.jar") \
        .config("spark.serializer", "org.apache.spark.serializer.KryoSerializer") \
        .config("spark.logConf", "true") \
        .getOrCreate()

    sc = spark.sparkContext
    sc.setLogLevel("INFO")
Run Code Online (Sandbox Code Playgroud)

我想看看我的日志中使用的有效配置.这条线

        .config("spark.logConf", "true") \
Run Code Online (Sandbox Code Playgroud)

应该使spark api将其有效配置作为INFO记录到日志中,但是默认日志级别设置为WARN,因此我看不到任何消息.

设置这一行

sc.setLogLevel("INFO")
Run Code Online (Sandbox Code Playgroud)

显示INFO消息向前发展,但到那时为时已晚.

如何设置spark开始的默认日志记录级别?

Mic*_*ski 8

您需要编辑 $SPARK_HOME/conf/log4j.properties 文件(如果没有,请创建它)。现在,如果您通过 提交代码spark-submit,那么您需要这一行:

log4j.rootCategory=INFO, console

如果您希望在控制台中显示 INFO 级别日志pyspark,则需要以下行:

log4j.logger.org.apache.spark.api.python.PythonGatewayServer=INFO


Sur*_*nti 6

您还可以像下面那样以编程方式更新日志级别,从 JVM 获取 spark 对象并执行如下操作

    def update_spark_log_level(self, log_level='info'):
        self.spark.sparkContext.setLogLevel(log_level)
        log4j = self.spark._jvm.org.apache.log4j
        logger = log4j.LogManager.getLogger("my custom Log Level")
        return logger;


use:

logger = update_spark_log_level('debug')
logger.info('you log message')
Run Code Online (Sandbox Code Playgroud)

如果您需要更多详细信息,请随时发表评论

  • 这段代码似乎不起作用,这里的 self 是什么? (3认同)

Yar*_*ron 5

http://spark.apache.org/docs/latest/configuration.html#configuring-logging

配置日志

Spark 使用 log4j 进行日志记录。您可以通过在 conf 目录中添加一个 log4j.properties 文件来配置它。一种开始方法是复制位于那里的现有 log4j.properties.template。


以下关于“如何登录 spark”的博客https://www.mapr.com/blog/how-log-apache-spark提出了一种配置 log4j 的方法,并提供了包括将 INFO 级别日志定向到文件中的建议。

  • 好吧,是这个设定吗?log4j.logger.org.apache.spark.repl.Main=信息 (2认同)