Zeppelin:如何在zeppelin中重启sparkContext

eat*_*ode 9 apache-spark apache-zeppelin

我正在使用隔离模式的zeppelins spark解释器,在这种模式下,它将为spark集群中的每个笔记本启动一项新工作.笔记本执行完成后,我想通过zeppelin终止这项工作.为此我做了sc.stop这个停止sparkContext并且作业也从spark集群停止.但是下次当我尝试运行笔记本时,它不再启动了sparkContext.那怎么办呢?

小智 18

它有点反直觉,但您需要访问解释器菜单选项卡而不是SparkContext直接停止:

  • 去翻译清单.

    口译员名单

  • 找到Spark解释器,然后单击restart右上角:

    火花解释者

  • 除了手动重启解释器之外还没有其他的吗? (7认同)
  • 当在`EMR`上使用`Zeppelin`作为`Spark`并从`S3`加载*external`fat-jar`*时,我发现**重启解释器*只需*一次*就不够了**.假设我从`S3`加载了*fat-jar*,后来升级了.为了确保在*interpreter中加载*new jar*,我这样做:(1)​​编译解释器`dependencies`并删除现有的jar,保存更改(2)重新启动解释器(3)再次编辑*解释器依赖项*并添加新jar(它可以具有与之前相同的路径)(4)再次重新启动解释器 (2认同)

小智 7

您可以通过单击相关解释器左侧的重新启动图标(在本例中为 spark 解释器),在解释器绑定(右上角的齿轮)中重新启动笔记本的解释器。

https://i.stack.imgur.com/MAm7a.png


Cod*_*er0 6

在使用 Zeppelin 和 Spark 时,我也偶然发现了同样的问题并进行了一些调查。一段时间后,我的第一个结论是:

  • 停止 SparkContext 可以通过sc.stop()在段落中使用来完成
  • 重新启动 SparkContext 仅适用于使用 UI(菜单 -> 解释器 -> Spark 解释器 -> 单击restart按钮)

但是,由于 UI 允许通过按下按钮重新启动 Spark 解释器,为什么不对按钮的 API 调用进行逆向工程restart!结果是,restartingSpark 解释器发送以下 HTTP 请求:

PUT http://localhost:8080/api/interpreter/setting/restart/spark
Run Code Online (Sandbox Code Playgroud)

幸运的是,Zeppelin 能够与多个解释器一起工作,其中一个也是一个 shell解释器。因此,我创建了两段:

第一段用于在需要时停止 SparkContext:

%spark
// stop SparkContext
sc.stop()
Run Code Online (Sandbox Code Playgroud)

第二段用于以编程方式重新启动 SparkContext:

%sh
# restart SparkContext
curl -X PUT http://localhost:8080/api/interpreter/setting/restart/spark
Run Code Online (Sandbox Code Playgroud)

用这两段停止并重新启动 SparkContext 后,我​​运行另一段来检查重新启动是否有效......它有效!因此,虽然这不是官方解决方案,而是一种解决方法,但它仍然是合法的,因为我们除了“按下”restart段落中的按钮之外什么都不做!

齐柏林飞艇版本:0.8.1