1
我有一个简单的shell脚本,看起来像这样:shell脚本不是从Java代码运行R(Rhipe)计划
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的结果。
请帮忙!
什么错误你好吗? – havexz 2012-02-19 07:54:57
我没有收到任何错误。 myMRjob.R没有得到执行。在返回后我会在下一个瞬间看到终端提示。这项工作需要一段时间才能运行,并写入到hdfs的o/p。我还检查了在hdfs中没有创建o/p目录。 – dipeshtech 2012-02-19 08:04:27
@dipeshtech:使用proc.getErrorStream()将错误获取到输入流中。打印它的控制台....应该有错误总和 – 2012-02-19 08:07:46