如果我有一个空的RDD,我希望我的spark应用程序优雅地结束。在scala中执行此操作的最佳方法是什么?
当我使用时:
if (myRDD.isEmpty) { sparkSession.stop() }
Spark应用程序尝试继续并抛出IllegalStageException
。
之后我需要System.exit(0)
吗?我之后应该添加return
吗?
答案 0 :(得分:1)
sparkSession.stop()
只会使Spark会话无效,但不会停止作业。这就是您获得IllegalStageException
的原因,因为作业(仍在运行!)尝试访问已经失效的会话。
我建议您使用return
或提出异常以提前结束工作,它比System.exit(0)