我目前没有使用火花流。我有一个ETL管道,我想在完成后重新提交作业。就像一个典型的cron作业,但只使用Spark API' s。那可能吗?
答案 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
可以自己重新开始工作。