运行Map从另一个java进程中减少任务

时间:2013-09-26 13:09:10

标签: hadoop mapreduce

我准备好了MR工作。 到目前为止,我正在通过调用./bin/hadoop jar jarname来执行任务。

现在我必须从另一个java进程运行相同的MR作业。我怎么能这样做?

感谢。

1 个答案:

答案 0 :(得分:3)

如果您确实希望使用外部Java程序中的hadoop jar运行,可以尝试使用ProcessBuilder。

 ProcessBuilder probuilder = new ProcessBuilder("hadoop jar...");
 // Start the process and wait for it to finish. 
 Process process = processBuilder.start();

 //Read output
 InputStream is = process.getInputStream();
 InputStreamReader ir = new InputStreamReader(is);
 BufferedReader br = new BufferedReader(ir);
 String line;
  while ((line = br.readLine()) != null) {
        System.out.println(line);
 }

 int exitStatus = process.waitFor();
 System.out.println("Job finished with status: " + exitStatus);