我注意到当运行PIG脚本时出错,会生成并保留日志。但是当没有错误时,将删除日志文件。即使作业成功,有没有办法保留日志文件?
答案 0 :(得分:3)
默认情况下,错误(例如:脚本解析错误)会记录到pig.logfile
,可以在$PIG_HOME/conf/pig.properties
中设置。如果您还想记录状态消息,请准备一个有效的log4j.properties
文件并将其设置在log4jconf
属性中。
例如:将log4j.properties.template重命名为$ PIG_HOME / conf中的log4j.properties并设置以下内容:
log4j.logger.org.apache.pig=info, B
# ***** A is set to be a ConsoleAppender.
#log4j.appender.A=org.apache.log4j.ConsoleAppender
# ***** A uses PatternLayout.
#log4j.appender.A.layout=org.apache.log4j.PatternLayout
#log4j.appender.A.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
# ***** B is set to be a FileAppender.
log4j.appender.B=org.apache.log4j.FileAppender
#log4j.appender.B.File=/home/user/pig-distrib/logs/pig_success.log
log4j.appender.B.File=/home/user/pig-distrib/logs/pig.log
log4j.appender.B.layout=org.apache.log4j.PatternLayout
log4j.appender.B.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
log4j.appender.B.Append=true
使用Pig v0.10.0(r1328203)时,我发现成功的pig任务没有将作业的历史日志写入hdfs的输出目录。
(hadoop.job.history.user.location=${mapred.output.dir}/_logs/history/
)
如果您想通过各种方式获得这些历史记录,请以这种方式在您的猪脚本中设置mapred.output.dir:
set mapred.output.dir '/user/hadoop/test/output';
答案 1 :(得分:0)
准备好log4j.properties文件后,打开pig.properties文件并取消注释以下内容:
log4jconf = $ PIG_HOME / conf / log4j.properties
答案 2 :(得分:0)
碰撞旧帖子
简单的方法是重定向输出
pig -f pig-file 2> xyz.log -- this will give just the logs
pig -f pigfile &> xyz.log -- logs + stdout(dumps)