【问题标题】:How can set the default spark logging level?如何设置默认的火花日志记录级别?
【发布时间】:2017-03-29 06:01:49
【问题描述】:

我从我自己的工作站上的 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")

我想查看日志中使用的有效配置。这一行

        .config("spark.logConf", "true") \

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

设置这条线

sc.setLogLevel("INFO")

显示 INFO 消息,但为时已晚。

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

【问题讨论】:

标签: apache-spark pyspark


【解决方案1】:

您还可以像下面这样以编程方式更新日志级别,从 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')

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

【讨论】:

    【解决方案2】:

    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=INFO
    • @ThatDataGuy - 添加了如何配置 log4j 的信息(并测试了输出文件确实包含“INFO”级别的日志)。请注意,示例配置直接指向 /var/log - 您需要将日志指向一个目录,该目录对运行 spark 的用户是可写的
    【解决方案3】:

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

    log4j.rootCategory=INFO, console

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-17
      • 1970-01-01
      • 2016-11-27
      • 1970-01-01
      • 2023-03-23
      • 2011-07-23
      • 1970-01-01
      • 2020-05-07
      相关资源
      最近更新 更多