Pig Batch模式:如何设置日志级别以隐藏INFO日志消息?

Pol*_*ase 10 apache-pig

使用Apache Pig版本0.10.1.21(rexported).当我执行一个pig脚本时,有很多INFO日志行看起来像这样:

2013-05-18 14:30:12,810 [Thread-28] INFO  org.apache.hadoop.mapred.Task - Task 'attempt_local_0005_r_000000_0' done.
2013-05-18 14:30:18,064 [main] WARN  org.apache.pig.tools.pigstats.PigStatsUtil - Failed to get RunningJob for job job_local_0005
2013-05-18 14:30:18,094 [Thread-31] WARN  org.apache.hadoop.mapred.JobClient - No job jar file set.  User classes may not be found. See JobConf(Class) or JobConf#setJar(String).
2013-05-18 14:30:18,114 [Thread-31] INFO  org.apache.hadoop.mapreduce.lib.input.FileInputFormat - Total input paths to process : 1
2013-05-18 14:30:18,254 [Thread-32] INFO  org.apache.hadoop.mapred.Task -  Using ResourceCalculatorPlugin : org.apache.hadoop.util.LinuxResourceCalculatorPlugin@3fcb2dd1
2013-05-18 14:30:18,265 [Thread-32] INFO  org.apache.hadoop.mapred.MapTask - io.sort.mb = 10
Run Code Online (Sandbox Code Playgroud)

猪脚本中是否有SET命令或命令行标志以允许记录级别?基本上我想隐藏[Thread-xx] INFO消息.仅显示警告和错误.我试过命令行调试标志.不幸的是,INFO消息仍然显示:

pig -x local -d WARN MyScript.pig
Run Code Online (Sandbox Code Playgroud)

希望有一个解决方案.在此先感谢您的帮助.

解决:由Loran Bendig回答,设置log4j.properties.为方便起见,这里总结一下

步骤1:将log4j配置文件复制到我的猪脚本所在的文件夹.

cp /etc/pig/conf.dist/log4j.properties log4j_WARN
Run Code Online (Sandbox Code Playgroud)

步骤2:编辑log4j_WARN文件并确保这两行存在

log4j.logger.org.apache.pig=WARN, A
log4j.logger.org.apache.hadoop = WARN, A
Run Code Online (Sandbox Code Playgroud)

步骤3:运行pig脚本并指示它使用自定义log4j

pig -x local -4 log4j_WARN MyScript.pig
Run Code Online (Sandbox Code Playgroud)

Vah*_*ili 5

另一个设置也可能是这样的:

创建一个名为 nolog.conf 的文件,内容如下

log4j.rootLogger=fatal
Run Code Online (Sandbox Code Playgroud)

然后按如下方式运行猪

pig -x local -4 nolog.conf
Run Code Online (Sandbox Code Playgroud)


see*_*ead 0

您可以覆盖默认日志配置(包括 INFO 消息),如下所示:

pig -4 log4j.properties MyScript.pig
Run Code Online (Sandbox Code Playgroud)