记录Spark中编写的自定义代码

时间:2016-04-13 21:14:31

标签: scala apache-spark

我们正在为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”) )在封闭内部。基本上驱动程序中的所有内容都将关闭,但不会关闭驱动程序

请帮忙

0 个答案:

没有答案