我SparkLauncher
在 Spark v1.6.0 中使用。我的问题是,当我使用这个类来启动我的 Spark 作业时,它会立即返回并且没有提交任何作业。我的代码如下。
new SparkLauncher()
.setAppName("test word count")
.setAppResource("file://c:/temp/my.jar")
.setMainClass("my.spark.app.Main")
.setMaster("spark://master:7077")
.startApplication(new SparkAppHandler.Listener() {
@Override public void stateChanged(SparkAppHandle h) { }
@Override public void infoChanged(SparkAppHandle h) { }
});
当我调试代码时,令我惊讶的是,这 clazz 所做的只是调用一个spark-submit.cmd
使用ProcessBuilder
.
[C:/tmp/spark-1.6.0-bin-hadoop2.6/bin/spark-submit.cmd,--master,spark://master:7077,--name,“测试字数”,--类,my.spark.appMain,C:/temp/my.jar]
ProcessBuilder
但是,如果我直接在控制台上运行此命令(由 运行的命令),则会提交一个 Spark 作业。关于发生了什么的任何想法?
还有另一种方法SparkLauncher.launch()
可用,但 javadocs 说要避免这种方法。
知道发生了什么吗?