java - 从 java 以编程方式执行 spark-submit

标签 java apache-spark runtime.exec

我正在尝试通过以下方式执行它:

Process process = Runtime.getRuntime().exec(spark_cmd);

运气不好。通过 shell 运行的命令启动我的应用程序并成功。通过 exec 运行它会启动一个进程,该进程会在不久之后死亡并且什么也不做。 当我尝试

process.waitFor();

它挂起并永远等待。当我尝试从过程中读取一些东西时,真正的魔法开始了:

 InputStreamReader isr = new InputStreamReader(process.getErrorStream());
 BufferedReader br = new BufferedReader(isr);

为此,我启动了一个在 while 循环中从流中读取的线程:

class ReadingThread extends Thread {

   BufferedReader reader;
   Wontekk(BufferedReader reader) {
      this.reader = reader;

   }

   @Override
   public void run() {
      String line;
      try {
         while ((line = reader.readLine()) != null) {
            System.out.println(line);
         }
      } catch (IOException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      }
   }
}

应用程序启动,做一些事情,然后挂起。当我中止我的应用程序时,spark 应用程序唤醒 (??????????) 并完成剩余的工作。有人对正在发生的事情有合理的解释吗?

谢谢

最佳答案

您可以借助 Java 代码在 SparkLauncher 的帮助下将 spark 作业作为 spark-submit 发送,这样您就可以通过下面的链接查看我们的

https://spark.apache.org/docs/1.4.0/api/java/org/apache/spark/launcher/SparkLauncher.html

关于java - 从 java 以编程方式执行 spark-submit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35866640/

相关文章:

java - 如何高效获取每个http状态码的计数?

java - 如何让 bean shell 作为数学解析器运行?

java - 将方法绑定(bind)到android中的按钮

java - 什么是安全的 java applet 通信方式 -> MySQL

java - Apache Spark : How can i access nested array of integers within Tuple2 object in Java?

java - 使用 java 恢复 PostgreSQL 数据库

hadoop - H2o 不工作的执行者数量

java - 如何在 java 中使用 spark 2.0.0 预览版

Java ProcessBuilder 抛出 IOException

java - 为什么命令行实用程序在通过 java 程序调用时挂起?