2

我注意到,当运行 PIG 脚本出错时,会生成并保存一个日志。但是当没有错误时,日志文件被删除。即使作业成功,有没有办法保留日志文件?

4

3 回答 3

3

默认情况下会记录错误(例如:脚本解析错误)pig.logfile,可以在$PIG_HOME/conf/pig.properties. 如果您也想记录状态消息,请准备一个有效log4j.properties文件并将其设置在log4jconf属性中。

例如:将 $PIG_HOME/conf 中的 log4j.properties.template 重命名为 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/)

如果您想通过各种方式获取这些历史记录,请以这种方式在您的 pig 脚本中设置 mapred.output.dir:

set mapred.output.dir '/user/hadoop/test/output';
于 2012-08-22T15:29:32.410 回答
0

准备好 log4j.properties 文件后,打开 pig.properties 文件并取消注释以下内容:

log4jconf=$PIG_HOME/conf/log4j.properties

于 2017-01-29T04:50:27.860 回答
0

撞旧线

简单的方法是重定向输出

pig -f pig-file 2> xyz.log  -- this will give just the logs
pig -f pigfile &> xyz.log -- logs + stdout(dumps)
于 2017-02-11T06:04:24.260 回答