根据this documentation,使用SparkLauncher和方法startApplication
启动/提交的Spark应用程序可以使用返回的SparkAppHandle和kill()
方法终止,因为它&# 39;儿童过程我尝试将它与CountDownLatch和计时器结合使用,但它对我不起作用。
带有SparkLauncher的Java应用程序在20分钟后完成,但之后仍然在我的YARN集群上运行了spark应用程序。
我使用以下代码:
`
// launcher config...
CountDownLatch countDownLatch;
Listener handleListeners = new Listener() {
@Override
public void stateChanged(SparkAppHandle handle) {
if (handle.getState().isFinal()) {
countDownLatch.countDown();
}
@Override
public void infoChanged(SparkAppHandle handle) {}
};
countDownLatch = new CountDownLatch(1);
SparkAppHandle handle = launcher.startApplication(handleListeners);
boolean regularExit = countDownLatch.await(20, TimeUnit.MINUTES);
if (!regularExit)
handle.kill();
` 我还在想,当kill-command已经在群集上运行时,kill命令才会起作用。
(拜托,有人可以修复代码片段吗?我没有正确格式化 - 谢谢。)