Zeppelin Notebook %pyspark 解释器 vs %python 解释器

Zeppelin Notebook %pyspark interpreter vs %python interpreter

Zeppelin notebook 中的 %python%pyspark 有什么区别(如下截图)?

...但是,如果我的 API / 代码完全相同,那么使用这些解释器有什么区别?他们中的任何一个都是faster/newer/better吗?为什么要用一个而不是另一个?

当您 运行 一个 %pyspark 段落时,zeppelin 将使用定义的参数(加载 spark 包、设置...)自动创建一个 spark 上下文(spark 变量)。* 看看在 spark-interpreter 的 documentation) 处,了解一些可能性。

%python段落中,您可以自己创建一个spark上下文,但它不会自动完成,也不会使用spark解释器部分定义的参数。

这似乎仍然不是很多,但是 zeppelin 可以处理多个用户(即使它目前并不完美)并且从管理的角度来看这变得非常方便。例如,管理员可以定义每个想要使用 spark(scala、R 或 python)的 zeppelin 用户,获得相同的定义环境(执行程序的数量、内存、特定版本的软件包)。仍然可以解决此限制,但至少可以避免无意的配置差异。

*例如:

%pyspark
spark

将评估此输出输出:

<SparkContext master=local[4] appName=ZeppelinHub>

%pyspark
spark

将评估此输出:

<pyspark.sql.session.SparkSession at 0x7fe757ca1f60>