在PIG UDF中进行调试

7

我是Hadoop/PIG的新手。我有一个基本问题。

在PIG UDF中,我们是否有日志记录功能?我编写了一个UDF,需要进行验证,我需要记录某些语句以检查流程。是否有可用的日志记录功能?如果有,在哪里可以找到Pig日志?

2个回答

6
假设您的UDF扩展了 EvalFunc,您可以使用从EvalFunc.getLogger()返回的 Logger。日志输出应该在 Pig 执行的相关 Map/Reduce 任务中可见(如果作业在不止一个阶段中执行,则需要逐一查找与日志条目相关联的阶段)。

我不确定,但你可以尝试使用PigLogger - 这可能会将东西发送回客户端。 - Chris White
非常抱歉问这样一个幼稚的问题。但是,我已经按照以下方式使用它:PigLogger pigLogger = this.getPigLogger(); pigLogger.warn(object,String,enum); 我有什么遗漏吗?或者这就是EvalFunc Logger的全部。 除了warn之外,我看不到其他任何东西。我们没有debug、info、error吗? - Uno
我尝试使用this.getLogger.info(String); 这个方法,但是在任务跟踪器日志中没有看到任何弹出。 - Uno
很抱歉,您能告诉我在哪里配置这些任务日志吗?我应该去哪里找到它们?我所知道的唯一日志是hadoop/logs目录下的日志。我的意思是数据节点/任务跟踪器/名称节点/辅助名称节点/作业跟踪器的日志。 - Uno
点击Map/Reduce后,我将被重定向到任务页面,其中列出了所有任务。当我点击它时,我会看到任务日志。这是它们存储的地方吗?对于如此微小的细节要求表示歉意。 - Uno
显示剩余8条评论

2

可能显而易见,但我建议在部署到集群/伪集群之前,在本地模式下调试您的UDF。这样,您可以直接在IDE中(我的情况是eclipse)进行调试,比日志调试更容易。


有没有一个网站或一些步骤,我可以跟随开始使用Eclipse。我的意思是在Eclipse上使用Pig。 - Uno
1
不知道有没有步骤的网站,但是很简单:将hadoop-core和pig依赖项放入您的maven pom中,然后使用org.apache.pig.PigServer进行操作。尝试使用pigServer.registerScript(resource.getInputStream(), pigScriptParams, null);,然后使用PigStats stats = pigServer.store("final_output", pigScriptParams.get("output_folder"), pigStoreFunc).getStatistics(); - ihadanny

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接