【发布时间】:2012-02-19 07:48:35
【问题描述】:
我有一个简单的 shell 脚本,如下所示:
R --vanilla<myMRjob.R
hadoop fs -get /output_03/ /home/user/Desktop/hdfs_output/
这个 shell 脚本运行 myMRjob.R,并从 hdfs 获取输出到本地文件系统。它从终端执行得很好。
当我尝试从 java 代码运行 shell 脚本时,我无法启动 MapReduce 作业,即第一行没有被执行。虽然“hadoop fs -get ..”行在 Java 代码中运行良好。
我使用的Java代码是:
import java.io.*;
public class Dtry {
public static void main(String[] args) {
File wd = new File("/home/dipesh/");
System.out.println("Working Directory: " +wd);
Process proc = null;
try {
proc = Runtime.getRuntime().exec("./Recomm.sh", null, wd);
} catch (Exception e) {
e.printStackTrace();
}
}
}
整个练习背后的原因是我想在 JSP 中触发并显示 myMRjob.R 的结果。
请帮忙!
【问题讨论】:
-
你遇到了什么错误?
-
我没有收到任何错误。 myMRjob.R 没有被执行。我在点击返回后的下一瞬间看到终端提示。该作业需要一些时间来运行并将 o/p 写入 hdfs。我还检查了 hdfs 中没有创建 o/p 目录。
-
@dipeshtech:使用 proc.getErrorStream() 将错误输入到输入流中。在控制台打印出来....应该有错误sumwer
-
尝试stackoverflow.com/a/8963445/525978打印错误并输出
-
感谢 Shashank,我没有收到任何错误,但是通过添加这些行,事情开始起作用了。