Zeppelin Notebook %pyspark 解释器 vs %python 解释器
Zeppelin Notebook %pyspark interpreter vs %python interpreter
Zeppelin notebook 中的 %python
和 %pyspark
有什么区别(如下截图)?
- 我可以 运行 在两种情况下使用相同的 python 命令(比如
print('hello')
)
我可以在两种情况下使用相同的 PySpark API
即from pyspark.sql import SparkSession
、spark.read.csv
- 编辑 2019 年 10 月 31 日 这不再是真的;在
%python
解释器中,我收到消息 No module named pyspark
。
- 我想我可以使用
pip install pyspark
安装缺少的模块,但我 不知道如何安装到 Zeppelin 资源上。
编辑 10/31/2019 我必须使用 python
解释器,而不是 python3
解释器,否则我会得到一个错误如:
Exception: Python in worker has different version 2.7 than that in driver 3.6, PySpark cannot run with different minor versions.Please check environment variables PYSPARK_PYTHON and PYSPARK_DRIVER_PYTHON are correctly set.
- 另外,我猜这个模块是我今年早些时候使用 Zeppelin 时安装的。
我什至可以来回切换; 同时使用它们?
即第一段使用 %python
,下一段使用 %pyspark
- 没关系;每种语言都看不到另一种语言定义的变量...
- 它们只是具有相同的 (Python) API,即每个人都可以创建自己的数据框
spark.createDataFrame([...])
- 我从下面的屏幕截图中看到这些语言使用不同的
解释者:
%python
语言 -> python
解释器
%pyspark
语言 -> spark
解释器
...但是,如果我的 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>
Zeppelin notebook 中的 %python
和 %pyspark
有什么区别(如下截图)?
- 我可以 运行 在两种情况下使用相同的 python 命令(比如
print('hello')
)我可以在两种情况下使用相同的 PySpark API即from pyspark.sql import SparkSession
、spark.read.csv
- 编辑 2019 年 10 月 31 日 这不再是真的;在
%python
解释器中,我收到消息No module named pyspark
。 - 我想我可以使用
pip install pyspark
安装缺少的模块,但我 不知道如何安装到 Zeppelin 资源上。
编辑 10/31/2019 我必须使用
python
解释器,而不是python3
解释器,否则我会得到一个错误如:Exception: Python in worker has different version 2.7 than that in driver 3.6, PySpark cannot run with different minor versions.Please check environment variables PYSPARK_PYTHON and PYSPARK_DRIVER_PYTHON are correctly set.
- 另外,我猜这个模块是我今年早些时候使用 Zeppelin 时安装的。
我什至可以来回切换; 同时使用它们?即第一段使用%python
,下一段使用%pyspark
- 没关系;每种语言都看不到另一种语言定义的变量...
- 它们只是具有相同的 (Python) API,即每个人都可以创建自己的数据框
spark.createDataFrame([...])
- 我从下面的屏幕截图中看到这些语言使用不同的
解释者:
%python
语言 ->python
解释器%pyspark
语言 ->spark
解释器
...但是,如果我的 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>