为什么SparkContext会随机关闭,您如何从Zeppelin重新启动它?

问题描述:

我在齐柏林写作火花SQL查询工作,有时我突然开始收到此错误(不改变代码后):为什么SparkContext会随机关闭,您如何从Zeppelin重新启动它?

Cannot call methods on a stopped SparkContext. 

然后输出表示进一步下跌:

The currently active SparkContext was created at: 

(No active SparkContext.) 

这显然没有意义。这是Zeppelin的一个错误吗?或者我做错了什么?我怎样才能重新启动SparkContext?

谢谢

+1

你正在使用什么火花大师?它是纱线客户吗? – user1314742

我曾经遇到这个问题几次。

如果您将主设置为纱线客户端,可能是由于资源管理器停止/重新启动,解释器进程可能仍在运行,但Spark上下文(这是一个纱线应用程序)不存在任何更多。

您可以通过咨询您的资源管理器Web界面来检查Spark Context是否仍在运行,并检查是否有名为Zeppelin的应用程序正在运行。

有时从Zeppelin(解释器选项卡 - > spark - > restart)重新启动解释器进程将解决问题。

其他时候,你需要:

  • 命令行
  • 删除你开始一个段落,它将开始新的火花星火解释PID文件
  • ,下一次杀死星火翻译过程内容
+0

谢谢你的回答,当我启动我的下一个群集时,我会试试这个 –

我在运行PySpark中的多个作业时遇到同样的问题。似乎在星火2.0.0,与SparkSession,当我打电话spark.stop() SparkSession调用下面的跟踪:

# SparkSession 
self._sc.stop() 
# SparkContext.stop() 
self._jsc = None 

然后,当我尝试创建新的一SparkContext一份新工作,SparkSession返回相同的SparkContext比以前与self.jsc = None

我解决了设置SparkSession._instantiatedContext = Nonespark.stop()强制SparkSession创建一个 SparkContext下次我的要求。

这不是最好的选择,但同时它解决了我的问题。

+0

spark 1.6怎么样?我找不到SparkSession ... – guilhermecgs

+0

SparkSession是在spark 2.0.0中引入的。 – Franzi

你能检查你的驱动程序的内存是否足够?我解决了这个问题,通过

  1. 放大驾驶员记忆
  2. 调GC:

    --conf spark.cleaner.periodicGC.interval=60 
    --conf spark.cleaner.referenceTracking.blocking=false 
    

我已经注意到此问题的详细运行pyspark命令时甚至琐碎的变量声明细胞执行挂起在运行状态。 正如上面用户1314742所提到的,只要查杀相关的PID就可以解决这个问题。

例如为:

ps -ef | grep zeppelin 

这是重新启动星火解释并重新启动飞艇笔记本不解决问题。我猜是因为它本身无法控制悬挂的PID