我正在尝试在 Zeppelin 和 python3 (3.5) 中针对 Spark 2.1.0 运行 pyspark。我已经使用 python3 启动并运行了 pyspark shell,但是切换到连接到同一本地集群的 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
一切都很好。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 创建问题。此外,我使用了一系列上述配置设置的组合,但没有成功。
配置中引用了一个设置
zeppelin.pyspark.python
默认为 python
但从文档中不清楚如何/在何处将其调整为 python3。为了帮助消除 OSX 细节,我也能够在 LinuxMint 18.1 上复制此故障。所以我一直在浏览 Zeppelin 文档和互联网,试图找到正确的配置设置,让 Zeppelin 作为 3.5 驱动程序运行。希望我错过了一些明显的东西,但我似乎无法找到这个。希望有人成功完成此操作并帮助识别我的错误。
谢谢你。
最佳答案
设置%pyspark
的正确方法通过 Zeppelin UI 使用 python 3 的解释器如下(在 apache/zeppelin docker 容器上测试)。
Interpreter
菜单项 spark
翻译zeppelin.pyspark.python
配置属性为 python3
Save
Restart
右上角重启解释器您现在可以检查 python 的版本打开 Notebook 并运行以下代码:
%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
现在一切都已设置为使用 python3 运行 pyspark
关于python-3.x - 在 Spark 2.1.0 上通过 python3 在 Zeppelin 中使用 pyspark,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42251428/