Apache spark 如何检查SparkContext是否已停止?

Apache spark 如何检查SparkContext是否已停止?,apache-spark,pyspark,Apache Spark,Pyspark,如何检测是否已被删除?sc.isStopped 取自第251行,这适用于编写时的Scala/Java API 在Spark发布1.6版之前,您无法检查它,只能触发它: sc.stop() 从版本1.6及更高版本开始,您有一个布尔函数,如果上下文停止或正在停止,该函数将返回true: sc.isStopped 这适用于PySpark API 感谢@zero323的评论: sc.\u jsc.sc().isStopped() 这为您提供了JavaSparkContext如果您使用spark 1.5,

如何检测是否已被删除?

sc.isStopped


取自第251行,这适用于编写时的Scala/Java API

在Spark发布1.6版之前,您无法检查它,只能触发它:

sc.stop()

从版本1.6及更高版本开始,您有一个布尔函数,如果上下文停止或正在停止,该函数将返回true:


sc.isStopped

这适用于PySpark API

感谢@zero323的评论:

sc.\u jsc.sc().isStopped()


这为您提供了Java
SparkContext

如果您使用spark 1.5,可以通过反射API实现:

boolean isStopped(SparkContext sc) throws NoSuchFieldException, IllegalAccessException {
    Field f = sc.getClass().getDeclaredField("stopped"); 
    f.setAccessible(true);
    AtomicBoolean stopped = (AtomicBoolean) f.get(sc);
    return stopped.get();
}

值得一提的是,它仅在Spark版本1.6+中可用。它是否可从pyspark?
sc._jsc.sc().isStopped()
中获得,其中
sc
pyspark.SparkContext
实例。对此答案不确定。。。。我在jupyter笔记本中运行spark。创建sparkcontext后,如果使用spark UI手动终止它,笔记本不会检测到上下文已关闭。我认为pyspark不会使用此方法,因为一旦停止sparkcontext调用sc.stop(),命令sc.\u jsc.sc().isStopped()会生成一个错误“AttributeError:'NoneType'对象没有属性'sc'