Pig Udf显示结果

use*_*438 2 java apache-pig

我是猪的新手,我在java中编写了一个udf并且我已经包含了一个

System.out.println
Run Code Online (Sandbox Code Playgroud)

声明.我必须知道在猪身上跑步时这个陈述的印刷地点.

Kun*_*l-G 6

假设您的UDF扩展了EvalFunc,您可以使用从EvalFunc.getLogger()返回的Logger .日志输出应该在pig执行的相关Map/Reduce任务中可见(如果作业在多个阶段中执行,那么您将不得不通过它们来查找相关的日志条目).

日志将最终出现在Map Reduce Task日志文件中.我建议在部署到集群之前以本地模式调试UDF,以便您可以像IDE一样从IDE调试它.

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

使用Pig v0.10.0(r1328203)时,我发现成功的pig任务不会将作业的历史记录日志写入hdfs的输出目录.(hadoop.job.history.user.location = $ {} mapred.output.dir/_日志/历史/)

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

set mapred.output.dir'/ user/hadoop/test/output';

注意: Pig使用apache的log4j模块进行日志记录.但是,弄清楚为什么你不能使用log4j会令人望而生畏.有猪的属性,有时您可能会使用自定义根记录器获得NPE.

Pig有一个命令行选项-4(是的,非常不像人们可以将它与log4j联系起来)与log4j一起使用.

以下是示例log4j.properties示例的示例用法.

选项-l用于命名日志文件t

pig -l /tmp/some.pig.log -4 log4j.properties -x local mysample.pig(script)

cat log4j.properties

# Root logger option
log4j.rootLogger=INFO, file, F
# Direct log messages to a log file
log4j.logger.org.apache.pig=DEBUG
log4j.logger.org.apache.hadoop=INFO
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=${pig.logfile}
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.apache.log4j.PatternLayout
#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p [%t] (%F:%L) - %m%n

#another example line below for a different format of output log line
# log4j.appender.file.layout.ConversionPattern="%d [%t] %-5p %c - %m%n"
Run Code Online (Sandbox Code Playgroud)

上述pig命令的输出以典型的apache log4j格式存储在文件/tmp/some.pig.log中.

请查看apache log4j文档,了解日志中不同的Appender,控制台及其各自的格式输出.或者,如果您正在寻找特定格式或重定向选项,请告诉我.