在 Spark 2.1.0 上使用 python3 在 Zeppelin 中使用 pyspark
Using pyspark in Zeppelin with python3 on Spark 2.1.0
我正在尝试 运行 Zeppelin 中的 pyspark 和 python3 (3.5) 针对 Spark 2.1.0。我已经启动了 pyspark shell 和 运行 python3 但是转到连接到同一个本地集群的 Zeppelin 会得到:
Exception: Python in worker has different version 3.5 than that in driver 2.7, PySpark cannot run with different minor versions
我修改了默认的 spark-env.sh 如下:(为简洁起见省略了未修改的行)
SPARK_LOCAL_IP=127.0.0.1
SPARK_MASTER_HOST="localhost"
SPARK_MASTER_WEBUI_PORT=8080
SPARK_MASTER_PORT=7077
SPARK_DAEMON_JAVA_OPTS="-Djava.net.preferIPv4Stack=true"
export PYSPARK_PYTHON=/Library/Frameworks/Python.framework/Versions/3.5/bin/python3
export PYSPARK_DRIVER_PYTHON=/Library/Frameworks/Python.framework/Versions/3.5/bin/ipython
抬头 ./bin/pyspark
shell。
一切都很好
Zeppelin 配置已在 zeppelin-site.xml 中进行了修改,仅将 ui 端口从 8080 移至 8666。`zeppelin-env.sh' 已修改如下:(仅显示 mods/additions)
export MASTER=spark://127.0.0.1:7077
export SPARK_APP_NAME=my_zeppelin-mf
export PYSPARK_PYTHON=/Library/Frameworks/Python.framework/Versions/3.5/bin/python3
export PYSPARK_DRIVER_PYTHON=/Library/Frameworks/Python.framework/Versions/3.5/bin/ipython
export PYTHONPATH=/Library/Frameworks/Python.framework/Versions/3.5/bin/python3
我试过使用 Anaconda,但 python 3.6 目前在使用 Spark 时出现问题。另外,我已经使用了上述配置设置的一堆组合 w/o 成功。
配置 zeppelin.pyspark.python
中引用了一个设置,默认为 python
,但文档 how/where 不清楚如何将其调整为 python3。为了帮助消除 OSX 细节,我也能够在 LinuxMint 18.1 上重现此故障。
- 运行 本地 OSX 10.11.6
- Spark 是 2.1.0-bin-hadoop2.7
- 飞艇 0.7.0-bin-all
所以我一直在浏览 Zeppelin 文档和互联网,试图找到正确的配置设置以使 Zeppelin 成为 运行 作为 3.5 驱动程序。希望我遗漏了一些明显的东西,但我似乎无法找到这个。希望有人成功地完成了这项工作,可以帮助找出我的错误。
谢谢。
自然地,在发布这个之后有些东西就起作用了...
在 ./conf/interpreter.json 的 Zeppelin 配置中,我找到了我的一个笔记本的配置:
"properties": {
...
"zeppelin.pyspark.python": "python",
...
}
将其更改为:
"properties": {
...
"zeppelin.pyspark.python": "python3",
...
}
(Combined with the same settings as above)
已达到让笔记本与 python 3.5 一起工作的预期效果。然而,这似乎有点 clunky/hacky,我怀疑有更优雅的方法来做到这一点。所以我不会将其称为 solution/answer,而是更多的解决方法。
通过 Zeppelin UI 设置 %pyspark
解释器使用 python 3 的正确方法如下(在 apache/zeppelin docker 容器上测试).
- 点击您的用户菜单
- 单击
Interpreter
菜单项
- 搜索
spark
口译员
- 将
zeppelin.pyspark.python
配置 属性 设置为 python3
- 点击
Save
- 点击右上角的
Restart
重启解释器
您现在可以检查 python 打开笔记本并 运行 执行以下代码的版本:
%pyspark
import sys
sys.version_info
你应该看到这样的输出
sys.version_info(major=3, minor=5, micro=2, releaselevel='final', serial=0)
您还必须像这样将 PYSPARK_PYTHON 和 PYSPARK_PYTHON_DRIVER 设置为 python3(示例使用 apache/zeppelin docker 容器,假设 zeppelin 作为容器名称):
docker exec -it zeppelin bash
cd /zeppelin/conf
cp zeppelin-env.sh.template zeppelin-env.sh
cat <<EOF >> zeppelin-env.sh
export PYSPARK_PYTHON=python3
export PYSPARK_DRIVER_PYTHON=python3
EOF
# Now, press Ctrl+d to exit the container
docker restart zeppelin
现在所有内容都已设置为 运行 pyspark python3
如果您使用 HDP 沙箱,另请参阅
如果相应调整,也可能适用于 Python 3:
The following steps are for Python 2.7.14 version:
Download and Install Python 2.7.14 in /usr/local/Python-2.7.14:
# wget http://python.org/ftp/python/2.7.14/Python-2.7.14.tar.bz2
# tar xvf Python-2.7.14.tar.bz2
# chown –R root:root Python-2.7.14
# cd Python-2.7.14
# ./configure
# make altinstall prefix=/usr/local/Python-2.7.14 exec-prefix=/usr/local/Python-2.7.14
Add following values in spark-env template under advanced spark-env section of Spark configuration in Ambari UI and restart Spark:
export PYSPARK_PYTHON=/usr/local/Python-2.7.14/bin/python2.7
export PYSPARK_DRIVER_PYTHON=/usr/local/Python-2.7.14/bin/python2.7
export SPARK_YARN_USER_ENV="PYSPARK_PYTHON=/usr/local/Python-2.7.14/bin/python2.7”
Change the following value in Spark Interpreter configuration in Zeppelin, save and restart the Interpreter:
zeppelin.pyspark.python = /usr/local/Python-2.7.14/bin/python2.7 (Default value is python)
Add and execute the following in notebook for validation:
%spark.pyspark
import sys
print (sys.version)
The following should be the output from above notebook:
2.7.14 (default, Oct 4 2017, 09:43:59)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-18)]
我正在尝试 运行 Zeppelin 中的 pyspark 和 python3 (3.5) 针对 Spark 2.1.0。我已经启动了 pyspark shell 和 运行 python3 但是转到连接到同一个本地集群的 Zeppelin 会得到:
Exception: Python in worker has different version 3.5 than that in driver 2.7, PySpark cannot run with different minor versions
我修改了默认的 spark-env.sh 如下:(为简洁起见省略了未修改的行)
SPARK_LOCAL_IP=127.0.0.1
SPARK_MASTER_HOST="localhost"
SPARK_MASTER_WEBUI_PORT=8080
SPARK_MASTER_PORT=7077
SPARK_DAEMON_JAVA_OPTS="-Djava.net.preferIPv4Stack=true"
export PYSPARK_PYTHON=/Library/Frameworks/Python.framework/Versions/3.5/bin/python3
export PYSPARK_DRIVER_PYTHON=/Library/Frameworks/Python.framework/Versions/3.5/bin/ipython
抬头 ./bin/pyspark
shell。
Zeppelin 配置已在 zeppelin-site.xml 中进行了修改,仅将 ui 端口从 8080 移至 8666。`zeppelin-env.sh' 已修改如下:(仅显示 mods/additions)
export MASTER=spark://127.0.0.1:7077
export SPARK_APP_NAME=my_zeppelin-mf
export PYSPARK_PYTHON=/Library/Frameworks/Python.framework/Versions/3.5/bin/python3
export PYSPARK_DRIVER_PYTHON=/Library/Frameworks/Python.framework/Versions/3.5/bin/ipython
export PYTHONPATH=/Library/Frameworks/Python.framework/Versions/3.5/bin/python3
我试过使用 Anaconda,但 python 3.6 目前在使用 Spark 时出现问题。另外,我已经使用了上述配置设置的一堆组合 w/o 成功。
配置 zeppelin.pyspark.python
中引用了一个设置,默认为 python
,但文档 how/where 不清楚如何将其调整为 python3。为了帮助消除 OSX 细节,我也能够在 LinuxMint 18.1 上重现此故障。
- 运行 本地 OSX 10.11.6
- Spark 是 2.1.0-bin-hadoop2.7
- 飞艇 0.7.0-bin-all
所以我一直在浏览 Zeppelin 文档和互联网,试图找到正确的配置设置以使 Zeppelin 成为 运行 作为 3.5 驱动程序。希望我遗漏了一些明显的东西,但我似乎无法找到这个。希望有人成功地完成了这项工作,可以帮助找出我的错误。
谢谢。
自然地,在发布这个之后有些东西就起作用了...
在 ./conf/interpreter.json 的 Zeppelin 配置中,我找到了我的一个笔记本的配置:
"properties": {
...
"zeppelin.pyspark.python": "python",
...
}
将其更改为:
"properties": {
...
"zeppelin.pyspark.python": "python3",
...
}
(Combined with the same settings as above)
已达到让笔记本与 python 3.5 一起工作的预期效果。然而,这似乎有点 clunky/hacky,我怀疑有更优雅的方法来做到这一点。所以我不会将其称为 solution/answer,而是更多的解决方法。
通过 Zeppelin UI 设置 %pyspark
解释器使用 python 3 的正确方法如下(在 apache/zeppelin docker 容器上测试).
- 点击您的用户菜单
- 单击
Interpreter
菜单项 - 搜索
spark
口译员 - 将
zeppelin.pyspark.python
配置 属性 设置为python3
- 点击
Save
- 点击右上角的
Restart
重启解释器
您现在可以检查 python 打开笔记本并 运行 执行以下代码的版本:
%pyspark
import sys
sys.version_info
你应该看到这样的输出
sys.version_info(major=3, minor=5, micro=2, releaselevel='final', serial=0)
您还必须像这样将 PYSPARK_PYTHON 和 PYSPARK_PYTHON_DRIVER 设置为 python3(示例使用 apache/zeppelin docker 容器,假设 zeppelin 作为容器名称):
docker exec -it zeppelin bash
cd /zeppelin/conf
cp zeppelin-env.sh.template zeppelin-env.sh
cat <<EOF >> zeppelin-env.sh
export PYSPARK_PYTHON=python3
export PYSPARK_DRIVER_PYTHON=python3
EOF
# Now, press Ctrl+d to exit the container
docker restart zeppelin
现在所有内容都已设置为 运行 pyspark python3
如果您使用 HDP 沙箱,另请参阅
如果相应调整,也可能适用于 Python 3:
The following steps are for Python 2.7.14 version:
Download and Install Python 2.7.14 in /usr/local/Python-2.7.14:
# wget http://python.org/ftp/python/2.7.14/Python-2.7.14.tar.bz2
# tar xvf Python-2.7.14.tar.bz2
# chown –R root:root Python-2.7.14
# cd Python-2.7.14
# ./configure
# make altinstall prefix=/usr/local/Python-2.7.14 exec-prefix=/usr/local/Python-2.7.14
Add following values in spark-env template under advanced spark-env section of Spark configuration in Ambari UI and restart Spark:
export PYSPARK_PYTHON=/usr/local/Python-2.7.14/bin/python2.7
export PYSPARK_DRIVER_PYTHON=/usr/local/Python-2.7.14/bin/python2.7
export SPARK_YARN_USER_ENV="PYSPARK_PYTHON=/usr/local/Python-2.7.14/bin/python2.7”
Change the following value in Spark Interpreter configuration in Zeppelin, save and restart the Interpreter:
zeppelin.pyspark.python = /usr/local/Python-2.7.14/bin/python2.7 (Default value is python)
Add and execute the following in notebook for validation:
%spark.pyspark
import sys
print (sys.version)
The following should be the output from above notebook:
2.7.14 (default, Oct 4 2017, 09:43:59)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-18)]