gpt4 book ai didi

scala - 使用 Scala 和 logback 配置 Apache Spark 日志记录

转载 作者:行者123 更新时间:2023-12-02 11:24:32 25 4
gpt4 key购买 nike

我对使用 Apache Spark 设置日志记录感到非常困惑。 Apache spark 使用 Log4j 进行日志记录,它会生成大量的日志数据。
有没有办法为 spark 日志设置 log4j 并为应用程序日志使用 logback。我很熟悉 logback 但是 看来 spark 仅支持 log4j。
在我介绍 apache spark 之前,下面的代码运行良好。在这方面的任何帮助都会有所帮助。

import com.typesafe.scalalogging.LazyLogging

import scala.util.{Failure, Success}
import scala.xml.{Elem, XML}



object MainApp extends App with LazyLogging {



val currency = new YahooCurrencyLoader() with CurrencyParameters
val ccy = currency.getXML(currency.ccyUrl) match {

case Success(v) => XML.save("PreviousRun.xml",v); logger.info("XML has been saved for use")
case Failure(ex) => logger.error("XML extraction failed. Look at Yahoo extraction class. ${ex.getMessage}" )

}

val xmllocation: String = "./PreviousRun.xml"
val loadxml: Elem = XML.loadFile(xmllocation)
//print(loadxml)
//print(currency.findCurrency(loadxml,"GBP"))

logger.info("USD CAD Cross is " + currency.findCurrency(loadxml,"CAD").head)

最佳答案

不知道你有没有用sbtmaven但这就是一切的开始。我自己我用sbt所以我会给你一个例子,我们是如何解决这个问题的。

  • Apache Spark 使用 log4j 1.2.xx

  • 这是真的,如果您不想使用相同的日志记录实现,这确实是个问题。但是有帮助!
    首先,从 spark 中排除以下库依赖项:
  • log4j
  • slf4j-log4j12

  • 对于 sbt (使用 sbt-assembly )它看起来像这样:
    lazy val spark16 = Seq("spark-core", "spark-sql", "spark-hive")
    .map("org.apache.spark" %% _ % "1.6.1")
    .map(_.excludeAll(
    ExclusionRule(name = "log4j"),
    ExclusionRule(name = "slf4j-log4j12")
    ))
  • 将 log4j 日志重定向到 slf4j

  • 详细说明可以在这里找到: https://www.slf4j.org/legacy.html
    我们感兴趣的模块是: log4j-over-slf4j

    The log4j-over-slf4j module contains replacements of most widely used log4j classes, namely org.apache.log4j.Category, org.apache.log4j.Logger, org.apache.log4j.Priority, org.apache.log4j.Level, org.apache.log4j.MDC, and org.apache.log4j.BasicConfigurator. These replacement classes redirect all work to their corresponding SLF4J classes.


    所以我们可以将所有日志重定向回 slf4j其他一些日志记录实现可以从中获取它。
    简单,只需将此依赖项添加到您的应用程序
    "org.slf4j" % "log4j-over-slf4j" % "1.7.25"
  • 添加所需的日志记录实现

  • 在我们的例子中,它是(就像你的一样) logback ,所以我们将其添加为依赖项:
    "ch.qos.logback" % "logback-classic" % "1.2.3"
    添加一些 logback.xml配置到你的类路径,例如 src/main/resources享受!
    Spark 提交
    如果您需要帮助,请使用 Logback在使用 spark-submit 部署您的应用程序时请按照这个答案: https://stackoverflow.com/a/45480145/1549135

    关于scala - 使用 Scala 和 logback 配置 Apache Spark 日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42356887/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com