gpt4 book ai didi

java - 使用JAVA和UNIX运行Pig命令

转载 作者:行者123 更新时间:2023-12-02 21:19:04 25 4
gpt4 key购买 nike

我正在尝试通过JAVA运行UNIX命令。我的shell命令调用了一个pig脚本。当我在unix终端中执行此操作时,它工作正常,但是通过java我没有得到任何输出。

PFB代码JAVA:

public String executeCommand(String command) {

StringBuffer output = new StringBuffer();

Process p;
try {
System.out.println("process started");
p = Runtime.getRuntime().exec(command);
//p.waitFor();
System.out.println("before reader");
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));

//String line = "";
System.out.println("After reader ");
while (reader.readLine() != null) {
System.out.println("inside while loop *******************************");
output.append(reader.readLine() + "\n");
System.out.println(reader.readLine());
}
System.out.println("while loop endedr");
} catch (Exception e) {
e.printStackTrace();
System.out.println("inside exception");
}
return output.toString();
}

pig_command:
时间 pig -param indir =“/ home / ******** / INDIR / archived / Bookings / 20160620 * / part *” -param outdir =“/ home / ********* / OUTDIR / HOURLYBOOKING / 20160620/05“-stop_on_failure -x mapreduce /home/directory/pig/pigscript.pig

我如何运行Java程序:
java -cp /home/directory/java_jar.jar com.Example.Tester pig_command

问题:尽管在HDFS中成功生成了输出,但上述while循环中的代码未打印任何内容(应打印作业日志)。

最佳答案

每次对readline()的调用都会转到流中的下一行。您的代码中的while循环在每个readline()调用中省略了两行(System.out.printlnoutput.append...),因此,如果您的Pig脚本的输出仅为一两行,则不会在控制台上打印任何内容,也不会在output循环中将其附加在StringBuffer(while)上。

要解决此问题,您的实现

        //String line = "";         
System.out.println("After reader ");
while (reader.readLine() != null) {
System.out.println("inside while loop *******************************");
output.append(reader.readLine() + "\n");
System.out.println(reader.readLine());
}

应该:
        String line = null;         
System.out.println("After reader ");
while ((line = reader.readLine()) != null) {
//System.out.println("inside while loop *******************************");
output.append(line + "\n");
System.out.println(line);
}

关于java - 使用JAVA和UNIX运行Pig命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37940471/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com