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

时间:2016-11-15 11:13:01

标签: 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")

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

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

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

设置此行

sc.setLogLevel("INFO")

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

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

3 个答案:

答案 0 :(得分:2)

您还可以像下面这样以编程方式更新日志级别,从JVM中获取spark对象,并像下面这样

def foobar(s:String) = {
  val f = foo(s)
  // if f is successful return f else return bar(s)
  f.biflatMap(_ => bar(s), _ => f)
}

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

答案 1 :(得分:1)

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级别日志定位到文件中的建议。 < /强>

答案 2 :(得分:0)

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

log4j.rootCategory=INFO, console

如果要在pyspark控制台中使用INFO级日志,则需要以下行:

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