如何通过Java运行Pig脚本文件

如何通过Java运行Pig脚本文件,java,hadoop,apache-pig,Java,Hadoop,Apache Pig,我一直在尝试让java进程通过PigServer启动pig脚本。然而,每当作业启动时,报告0%,lzo报告其处理输入,并且作业失败,没有错误,除了PigStats报告“无法检索作业” 这是代码。 其中report是pigscript的路径,params是要替换的params的HashMap pig = new PigServer("mapreduce"); try { pig.registerScript(report, params); pig.store("patterns"

我一直在尝试让java进程通过PigServer启动pig脚本。然而,每当作业启动时,报告0%,lzo报告其处理输入,并且作业失败,没有错误,除了PigStats报告“无法检索作业”

这是代码。 其中report是pigscript的路径,params是要替换的params的HashMap

pig = new PigServer("mapreduce"); try { pig.registerScript(report, params); pig.store("patterns", "patterns"); } finally { pig.shutdown(); } pig=新PigServer(“mapreduce”); 试一试{ pig.registerScript(报告,参数); 清管器存储(“模式”、“模式”); }最后{ 清管器关闭(); }
我还尝试在pig脚本中用一个store替换store(),但得到了相同的结果。

因此我继续深入研究这个问题。所讨论的代码是通过Mule 3应用程序执行的,我对此不是100%,但我认为Mule Log4j实现干扰了Hadoop日志系统。我认为这导致了Hadoop的反常。我这样做是基于这样一个事实:在搞乱了类路径之后,我没有将Pig与Mule应用捆绑在一起,而是将Pig类路径发送到本地Pig安装,我实际上能够将作业提交给JobTracker,之后我收到了关于类丢失的投诉。该类是mule log4j实现。我尝试用我的pig脚本注册Jar,但这只会导致提交作业。然而,它只是在一个待处理的状态中存在,但没有在JobTracker中列出。您必须手动输入作业才能在跟踪器中找到它。在终止作业时,JobTracker似乎不会将失败(终止)通知正在执行的脚本。