用于Scala应用程序的Spark自定义log4j集成

时间:2015-12-18 10:55:58

标签: scala maven apache-spark log4j hortonworks-data-platform

我是Spark和Scala的新手, 问题是我无法调试我的应用程序。

我在Scala中使用Maven开发了一个spark应用程序。 但是我无法记录详细信息,这意味着没有获得生成该日志文件的位置,因此根据log4j属性,日志文件在给定路径中不可用。

我需要做的任何具体更改,以获取该日志文件。

我正在Hortonworks中测试我的应用程序。

提交应用程序的命令:

bin/spark-submit --master yarn-cluster --class com.examples.MainExample lib/Test.jar

log4j.properties文件保存在src / resources文件夹

PFB log4j.properties

log4j.appender.myConsoleAppender=org.apache.log4j.ConsoleAppender
log4j.appender.myConsoleAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.myConsoleAppender.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

log4j.appender.RollingAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.RollingAppender.File=/var/log/spark.log
log4j.appender.RollingAppender.DatePattern='.'yyyy-MM-dd
log4j.appender.RollingAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.RollingAppender.layout.ConversionPattern=[%p] %d %c %M - %m%n


# By default, everything goes to console and file
log4j.rootLogger=INFO, myConsoleAppender, RollingAppender

 # The noisier spark logs go to file only
log4j.logger.spark.storage=INFO, RollingAppender
log4j.additivity.spark.storage=false
log4j.logger.spark.scheduler=INFO, RollingAppender
log4j.additivity.spark.scheduler=false
log4j.logger.spark.CacheTracker=INFO, RollingAppender
log4j.additivity.spark.CacheTracker=false
log4j.logger.spark.CacheTrackerActor=INFO, RollingAppender
log4j.additivity.spark.CacheTrackerActor=false
log4j.logger.spark.MapOutputTrackerActor=INFO, RollingAppender
log4j.additivity.spark.MapOutputTrackerActor=false
log4j.logger.spark.MapOutputTracker=INFO, RollingAppender
log4j.additivty.spark.MapOutputTracker=false    

2 个答案:

答案 0 :(得分:1)

无法通过应用程序解决此问题,但如果您在conf文件夹中更改log4j.properties如下所示,它将写入日志以提供文件。 确保路径具有写访问权。

log4j.rootLogger=INFO, FILE
# Set everything to be logged to the console
log4j.rootCategory=INFO, FILE
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=/tmp/sparkLog/SparkOut.log

log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n

# Settings to quiet third party logs that are too verbose
log4j.logger.org.eclipse.jetty=WARN
log4j.logger.org.eclipse.jetty.util.component.AbstractLifeCycle=ERROR
log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper=INFO
log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=INFO

答案 1 :(得分:-1)

尝试将log4j.properties放在' src / main / scala / resources'。