sparkapphandle永远提供未知状态

46qrfjad  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(412)

我正在使用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上运行。

eoigrqb6

eoigrqb61#

您需要阻塞主线程并等待驱动程序的回调。我在先前的回答中解释了一个概念。
您可以在try/catch块中执行thread.sleep,或者使用带倒计时锁存器的spark侦听器。

while(!jobHandle.getState().isFinal()) { 
   //await until job finishes
   Thread.sleep(1000L);
}

相关问题