gpt4 book ai didi

scala - Scala 中的 Apache Spark 日志记录

转载 作者:行者123 更新时间:2023-12-03 05:54:49 26 4
gpt4 key购买 nike

我正在寻找一种解决方案,以便能够在 Apache Spark 节点上执行代码时记录附加数据,这有助于稍后调查执行期间可能出现的一些问题。尝试使用传统解决方案(例如 com.typesafe.scalalogging.LazyLogging)会失败,因为日志实例无法在 Apache Spark 等分布式环境中序列化。

我已经调查了这个问题,目前我找到的解决方案是使用 org.apache.spark.Logging 特征,如下所示:

class SparkExample with Logging {
val someRDD = ...
someRDD.map {
rddElement => logInfo(s"$rddElement will be processed.")
doSomething(rddElement)
}
}

但是,Logging 特性似乎并不是 Apache Spark 的永久解决方案,因为它被标记为 @DeveloperApi 并且类文档提到:

This will likely be changed or removed in future releases.

我想知道 - 它们是否是我可以使用的任何已知日志记录解决方案,并且允许我在 Apache Spark 节点上执行 RDD 时记录数据?

@Later Edit :下面的一些评论建议使用 Log4J。我尝试过使用 Log4J,但在使用 Scala 类(而不是 Scala 对象)中的记录器时仍然遇到问题。这是我的完整代码:

import org.apache.log4j.Logger
import org.apache.spark._

object Main {
def main(args: Array[String]) {
new LoggingTestWithRDD().doTest()
}
}

class LoggingTestWithRDD extends Serializable {

val log = Logger.getLogger(getClass.getName)

def doTest(): Unit = {
val conf = new SparkConf().setMaster("local[4]").setAppName("LogTest")
val spark = new SparkContext(conf)

val someRdd = spark.parallelize(List(1, 2, 3))
someRdd.map {
element =>
log.info(s"$element will be processed")
element + 1
}
spark.stop()
}

}

我看到的异常(exception)是:

Exception in thread "main" org.apache.spark.SparkException: Task not serializable -> Caused by: java.io.NotSerializableException: org.apache.log4j.Logger

最佳答案

您可以使用 Akhil 中提出的解决方案
https://www.mail-archive.com/user@spark.apache.org/msg29010.html 。我自己用过并且有效。

Akhil Das Mon, 25 May 2015 08:20:40 -0700
Try this way:

object Holder extends Serializable {      
@transient lazy val log = Logger.getLogger(getClass.getName)
}


val someRdd = spark.parallelize(List(1, 2, 3)).foreach { element =>
Holder.log.info(element)
}

关于scala - Scala 中的 Apache Spark 日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29208844/

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