我正在使用java应用程序启动一个spark作业 SparkLauncher
.
SparkAppHandle jobHandle;
try {
jobHandle = new SparkLauncher()
.setSparkHome("C:\\spark-2.0.0-bin-hadoop2.7")
.setAppResource("hdfs://server/inputs/test.jar")
.setMainClass("com.test.TestJob")
.setMaster("spark://server:6066")
.setVerbose(true)
.setDeployMode("cluster")
.addAppArgs("abc")
.startApplication();
} catch (IOException e) {
throw new RuntimeException(e);
}
while(!jobHandle.getState().isFinal());
我可以看到我的工作运行在斯巴鲁,而且它正在完成没有任何错误。
然而,我的java应用程序从未终止 jobHandle.getState()
始终保持在 UNKNOWN
州。我错过了什么?我的spark api版本是2.0.0。另一个可能相关的细节是,我的启动程序应用程序正在windows上运行。
1条答案
按热度按时间eoigrqb61#
您需要阻塞主线程并等待驱动程序的回调。我在先前的回答中解释了一个概念。
您可以在try/catch块中执行thread.sleep,或者使用带倒计时锁存器的spark侦听器。