【问题标题】:execute pig command in Java program在Java程序中执行pig命令
【发布时间】: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


【解决方案1】:

您应该使用PigServer 从java 程序执行pig 脚本。它更安全,更便携。

另请参阅此答案:https://stackoverflow.com/a/11299259/373151

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-16
    • 2015-06-15
    • 2017-05-03
    • 1970-01-01
    • 1970-01-01
    • 2012-08-13
    • 2015-04-15
    • 1970-01-01
    相关资源
    最近更新 更多