完成后如何在Spark中重新提交作业?

时间:2016-10-07 19:31:35

标签: apache-spark

我目前没有使用火花流。我有一个ETL管道,我想在完成后重新提交作业。就像一个典型的cron作业,但只使用Spark API' s。那可能吗?

1 个答案:

答案 0 :(得分:4)

检查SparkLauncher并尝试以下内容:

import org.apache.spark.launcher.SparkLauncher;

public class MyLauncher {
   public static void main(String[] args) throws Exception {

      while(true){
           Process spark = new SparkLauncher()
             .setAppResource("app.jar")
             .setMainClass("package.MainClass")
             .setMaster("local")
             .setConf(SparkLauncher.DRIVER_MEMORY, "1g")
             .launch();
           spark.waitFor(); <-- Causes the current thread to wait, if necessary, until the process represented by this Process object has terminated.
      }
   }
}

通过这种方式,您可以使用SparkLauncher以编程方式提交作业。 launch()返回java Process,您只需等到处理结束,然后在while中重新提交作业。

我不知道spark-submit可以自己重新开始工作。