【发布时间】:2013-01-24 06:15:33
【问题描述】:
我曾经写过PHP代码来执行pig命令,效果很好, 现在我切换到 Java 但似乎不起作用,这是我的代码:
String pigCommand = "pig -x local -p ouput=/tmp my_pig_script.pig";
Runtime r = Runtime.getRuntime();
Process p;
int exitVal;
try {
p = r.exec(pigCommand);
exitVal = p.waitFor();
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = null;
while((line = br.readLine()) != null) {
System.out.println(line);
}
br.close();
System.out.println("exitVal: " + exitVal);
System.out.println("Done");
如果我直接在控制台中运行 that pig 命令,它可以工作,如果我替换 该 Pig 命令与其他 shell 命令说“ping www.yahoo.com”,然后运行 java程序,它也可以。那么可能是什么问题呢?谢谢
【问题讨论】:
-
任何错误信息。当你运行它时它会做什么或说什么?
-
1) 使用错误流并实现从Runtime.exec tag Wiki 链接的 Java World 文章中的所有其他技巧。 2) 使用
ProcessBuilder创建Process。 3) 为了提高鲁棒性,将String pigCommand拆分为String[] pigCommands。 4) 为了尽快获得更好的帮助,请发帖SSCCE。 -
专门运行pig脚本,最好通过
PigServer(stackoverflow.com/questions/11152068/…)运行 -
只是猜测:pig 命令是否依赖于环境特定信息(类似于 JAVA_HOME 的东西,但对于 pig)?路径是否正确?
-
我还建议像 Raze2dust 建议的那样使用
PigServer。或者你也可以使用Commons-exec:stackoverflow.com/a/13185617/1050422
标签: java process apache-pig runtime.exec