Apache pig 在嵌入式pig程序中使用多个存储执行pig脚本文件
我想在嵌入式pig程序中执行一个pig脚本文件,如下所示Apache pig 在嵌入式pig程序中使用多个存储执行pig脚本文件,apache-pig,Apache Pig,我想在嵌入式pig程序中执行一个pig脚本文件,如下所示 > PigServer pigServer = new PigServer(ExecType.MAPREDUCE); > pigServer.registerScript("testPig.pig"); ----猪----- 为此,我编写了如下所示的代码 > PigServer pigServer = new PigServer(ExecType.MAPREDUCE); > pigServer.registerS
> PigServer pigServer = new PigServer(ExecType.MAPREDUCE);
> pigServer.registerScript("testPig.pig");
----猪-----
为此,我编写了如下所示的代码
> PigServer pigServer = new PigServer(ExecType.MAPREDUCE);
> pigServer.registerScript("testPig.pig");
但它不起作用。我已经在grunt shell模式下检查过了。在那里,它工作得很好。
所以我做了这样的改变
---猪-----
这方面的嵌入式pig代码是
> PigServer pigServer = new PigServer(ExecType.MAPREDUCE,prt);
> pigServer.registerScript(path);
> pigServer.store("B","/user/biadmin/myoutput20");
现在修改后的代码运行良好。
所以现在我的怀疑是
您的
PigServer
代码不工作,因为;调用.registerScript()
时,默认情况下,PigServer
将GruntParser
上的交互模式标志设置为false
。从PigServer
源代码:
public void registerScript(InputStream in, Map<String,String> params,List<String> paramsFiles) throws IOException {
try {
String substituted = doParamSubstitution(in, params, paramsFiles);
GruntParser grunt = new GruntParser(new StringReader(substituted));
/********************************************/
grunt.setInteractive(false);
/********************************************/
grunt.setParams(this);
grunt.parseStopOnError(true);
} catch (org.apache.pig.tools.pigscript.parser.ParseException e) {
log.error(e.getLocalizedMessage());
throw new IOException(e.getCause());
}
}
public void registerScript(InputStream-in、映射参数、列表参数文件)引发IOException{
试一试{
字符串替换=doParamSubstitution(in、params、paramsFiles);
GruntParser grunt=新的GruntParser(新的StringReader(已替换));
/********************************************/
grunt.setInteractive(false);
/********************************************/
grunt.setParams(本);
grant.parseStopOnError(true);
}catch(org.apache.pig.tools.pigscript.parser.parsee){
log.error(例如getLocalizedMessage());
抛出新IOException(例如getCause());
}
}
引用GruntParser
源代码:
public void registerScript(InputStream in, Map<String,String> params,List<String> paramsFiles) throws IOException {
try {
String substituted = doParamSubstitution(in, params, paramsFiles);
GruntParser grunt = new GruntParser(new StringReader(substituted));
/********************************************/
grunt.setInteractive(false);
/********************************************/
grunt.setParams(this);
grunt.parseStopOnError(true);
} catch (org.apache.pig.tools.pigscript.parser.ParseException e) {
log.error(e.getLocalizedMessage());
throw new IOException(e.getCause());
}
}
在交互模式下,每当遇到STORE命令时,立即执行计划
这意味着,当交互模式未处于活动状态时,STORE
命令将被忽略(也就是说,它们不会自动运行),直到进一步调用PigServer.openIterator
或PigServer.STORE
调用(也就是说,您明确地调用时需要STORE
行)
至于你的第二个问题,你可能想看看课堂。谢谢你的回答。。。现在我明白了原因,但如何解决这个问题??我在pig.jar文件中没有找到PigRunner.class;否则它就不会有,也不会在里面,对吗?:)我的是旧版本。。我在新版《猪》中发现了这门课……**谢谢大家**很高兴你们把它整理好了;记住要接受关于StackOverflow的问题的正确答案。。但是让我来看看第一班的猪倌。如果有效,那么只有我可以接受rt?