Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 如何优雅地提前结束Spark应用程序?_Scala_Apache Spark - Fatal编程技术网

Scala 如何优雅地提前结束Spark应用程序?

Scala 如何优雅地提前结束Spark应用程序?,scala,apache-spark,Scala,Apache Spark,如果我有一个空的RDD,我希望我的spark应用程序能够优雅地结束。在scala中实现这一点的最佳方法是什么 当我只是使用: if(myRDD.isEmpty){sparkSession.stop()} Spark应用程序尝试继续并抛出一个非法StageException 我是否需要系统。然后退出(0)?我是否应该在之后添加return?sparkSession.stop()只会使Spark会话无效,但不会停止作业。这就是为什么当作业(仍在运行!)尝试访问已失效的会话时,会出现非法StageEx

如果我有一个空的RDD,我希望我的spark应用程序能够优雅地结束。在scala中实现这一点的最佳方法是什么

当我只是使用:

if(myRDD.isEmpty){sparkSession.stop()}

Spark应用程序尝试继续并抛出一个
非法StageException

我是否需要
系统。然后退出(0)
?我是否应该在之后添加
return

sparkSession.stop()
只会使Spark会话无效,但不会停止作业。这就是为什么当作业(仍在运行!)尝试访问已失效的会话时,会出现
非法StageException


我建议使用
return
或抛出异常来提前结束作业,这比
系统更安全。退出(0)

关闭SparkContext后是否尝试使用它?请发布更多的代码,这样我们就可以看到你实际上在做什么。您通常只会在整个程序完成后停止spark上下文,因此我不明白您为什么要在if语句中执行此操作。我是scala/spark的新手,请原谅,如果这是一个愚蠢的问题,那么System.exit(0)不安全的原因是什么?这不是一个愚蠢的问题,答案实际上与scala无关。抛出异常或使用
return
将控制权传递给调用方,而
System.exit()
终止应用程序。如果您确定自己是独立运行的,那么使用
System.exit()
是可以的,尽管不赞成这样做;然而,Spark应用程序尽管看起来像独立的应用程序,但实际上是作为集群上Spark运行时的一部分运行的,您可能会终止比您预期的更多的应用程序。举个例子,看一看。