我们正在为Apache Spark编写Scala代码,并在cloudera 5.5中以纱线模式(Yarn Client Mode)运行该流程。 Spark版本是1.5
我需要为此代码进行日志记录,并希望在Spark的特定目录中移动日志,而不是火花日志中的噪声
我们正在使用普通的log4j。暂时没有时间记录特征。
我已更改$ {spark_home}中的默认log4j文件,如此
# Set everything to be logged to the console
log4j.rootLogger=ERROR, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n
# Spark Logs
log4j.appender.aAppender=org.apache.log4j.RollingFileAppender
log4j.appender.aAppender.File=/var/log/aLogger.log
log4j.appender.aAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.aAppender.layout.ConversionPattern=[%p] %d %c %M - %m%n
log4j.appender.aAppender.maxFileSize=50MB
log4j.appender.aAppender.maxBackupIndex=5
log4j.appender.aAppender.encoding=UTF-8
# My custom logging goes to another file
log4j.logger.fsaLogger=ERROR, fsaAppender
这是我在scala中的代码
这是主要方法
val logger =LogManager.getLogger("aLogger")
val jobName = "AData"
logger.warn("jobName ::" +jobName +" Started at ::" +
+Calendar.getInstance().getTime())
val sc = new SparkContext(conf)
val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)
val sourceDF = sqlContext.read
.format("com.databricks.spark.avro")
.load(pathToFiles)
finalCSMDF.map { row =>
//To remove Serilizable Exception
var loggers = org.apache.log4j.LogManager.getLogger("aLogger")
loggers.error("Test Log")
row
}
logger.warn("jobName ::" +jobName +" completed at ::" +
+Calendar.getInstance().getTime())
我的问题是,当我在纱线模式下运行时,我在/var/log/aLogger.log中找到了jobName ::“+ jobName started”等,但没有找到loggers.error(“Test Log”) )在封闭内部。基本上驱动程序中的所有内容都将关闭,但不会关闭驱动程序
请帮忙