【问题标题】:Reducing the log output from Spark in a Scala program在 Scala 程序中减少 Spark 的日志输出
【发布时间】:2019-01-18 05:29:26
【问题描述】:

我正在按照this example 编写一个 Scala / Spark 程序。我的工具是 IntelliJ 和 sbt。 (我没有使用 scala spark shell。)我正在使用带有 logback-classic 的 scala-logging,我需要减少来自 Spark 的日志记录或将 spark 日志记录定向到不同的 .log 文件。

我尝试在我的代码中调用sc.setLogLevel("WARN"),其中scSparkContext,但它没有效果。

更糟糕的是,Spark 日志输出来自多个不同的包(org.apache.spark、o.a.h.m.lib、o.a.h.s.a 等),我希望有比为每个包定义附加程序更好的方法。

如何关闭 Spark 日志记录,或者更好地将 Spark 的日志记录重定向到与我的代码中的日志记录调用不同的文件?

【问题讨论】:

  • 先生,虽然docs 声明..SparkConf take highest precedence, then flags passed to spark-submit or spark-shell, then options in the spark-defaults.conf file..,您可能仍想查看log4j that Spark uses
  • 您是否尝试设置记录器名称 = 您的包。 Level= 在 logback xml 文件中警告?
  • 复制 log4j.properites 日志被拒绝到我的 src/main/resources 没有效果。

标签: scala apache-spark logback scala-logging


【解决方案1】:

您需要使用

来抑制 Logger 包中的日志消息
Logger.getLogger("org").setLevel(Level.ERROR)

示例程序 - 试试这个

import org.apache.log4j.{Level, Logger}
import org.apache.spark._
import org.apache.spark.sql._
import org.apache.spark.sql.functions._


object casestudy1 {

  def main(args: Array[String]) {
    Logger.getLogger("org").setLevel(Level.ERROR)
    val spark = SparkSession.builder().appName("Sample-case_study1").master("local[*]").getOrCreate()

    import spark.implicits._

      val df = Seq( (1, "Hello how are you"),(1, "I am fine"),(2, "Yes you are")).toDF("a","b")
      df.show(false)
  }
}

【讨论】:

    【解决方案2】:

    您可以直接从 sparkContext 设置 spark logger 的日志级别。 要降低 Spark 的详细程度,您必须将级别设置为 ERROR,以使 spark 仅在发生错误时写入日志。

    val session =  SparkSession.builder().appName("appName").master("local[*]").getOrCreate()
    session.sparkContext.setLogLevel("ERROR")
    

    【讨论】:

      【解决方案3】:

      结果很容易。在我的 logback.xml 中,我设置了 <root level="error"> 以关闭 Spark 的噪音。我添加了一个带有附加程序的<logger name="mypackage" level=debug additivity="false"> 到我希望我的日志消息转到的位置。

      【讨论】:

        猜你喜欢
        • 2016-12-05
        • 2018-02-07
        • 1970-01-01
        • 1970-01-01
        • 2021-12-02
        • 2020-06-06
        • 1970-01-01
        • 2018-09-14
        • 2015-05-26
        相关资源
        最近更新 更多