我的团队正在为我们构建的应用程序尝试从 Zeppelin 过渡到 Jupyter,因为 Jupyter 似乎有更大的动力,更多的定制机会,并且通常更灵活。然而,在 Jupyter 中,有几件 Zeppelin 是我们无法实现的。
主要是支持多语言 Spark - Jupyter 是否可以在同一个笔记本中创建可通过 R、Scala、Python 和 SQL 访问的 Spark 数据帧?我们编写了一个 Scala Spark 库来创建数据帧并将它们交还给用户,用户可能想要使用各种语言来操作/询问数据帧。
Livy是Jupyter 上下文中的解决方案吗,即它是否允许多个连接(从各种语言前端)到一个公共 Spark 后端,以便它们可以操作相同的数据对象?我不能从 Livy 的网站上完全判断给定的连接是否只支持一种语言,或者每个会话是否可以有多个连接。
如果 Livy 不是一个好的解决方案,BeakerX 可以满足这个需求吗?BeakerX 网站称其两个主要卖点是:
- 多语言魔法和自动翻译,让您可以在同一个笔记本中访问多种语言,并在它们之间无缝通信;
- Apache Spark 集成,包括 GUI 配置、状态、进度、中断和表格;
但是,我们无法使用 BeakerX 连接到本地 Spark 集群以外的任何东西,因此我们无法验证多语言实现的实际工作原理。如果我们可以连接到 Yarn 集群(例如 AWS 中的 EMR 集群),多语言支持是否可以让我们使用不同的语言访问相同的会话?
最后,如果这些都不起作用,自定义魔法会起作用吗?也许可以将请求代理到其他内核,例如和spark
内核?我看到这种方法的问题是,我认为每个后端内核都有自己的 Spark 上下文,但是有没有我没有想到的解决方法?pyspark
sparkr
(我知道 SO 问题不应该征求意见或建议,所以我在这里真正要问的是,上述三种选择是否真的存在可能的成功之路,不一定我应该选择其中的哪一种。)