2012-06-12 70 views
7

我是Hadoop/PIG的新手。 我有一个基本的问题。在PIG UDF中调试

我们在PIG UDF中有日志记录功能吗?我写了一个UDF,我需要验证 我需要记录某些语句来检查流。是否有可用的日志记录工具?如果是,猪在哪里存在?

回答

6

假设您的UDF延伸EvalFunc,您可以使用从EvalFunc.getLogger()返回的记录器。日志输出应该在Pig执行的相关Map/Reduce任务中可见(如果作业在多个阶段中执行,那么您将不得不通过它们来找到关联的日志条目)。

+0

因此,日志将最终在Map Reduce Task日志文件中?我可以专门将我的日志语句写入单独的文件吗? – Uno

+0

是的,他们会。你可以,但是你必须去每个任务跟踪器查看/收集它们。我想你可以尝试配置远程记录器(例如登录到数据库)。 –

+0

我不确定,但你可以试试PigLogger--可能会把东西发回客户端。 –

2

可能很明显,但我建议在本地模式下调试您的UDF,然后再部署到集群/伪集群上。这样,你就可以在你的IDE中进行调试(在我的情况下是eclipse),这比日志调试更容易。

+0

有没有一个网站或我可以遵循的一些步骤来开始使用Eclipse。我的意思是日食时的猪。 – 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