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'