由于 python 版本,运行 PySpark DataProc 作业时出错
Error while running PySpark DataProc Job due to python version
我使用以下命令创建了一个 dataproc 集群
gcloud dataproc clusters create datascience \
--initialization-actions \
gs://dataproc-initialization-actions/jupyter/jupyter.sh \
然而,当我提交我的 PySpark 作业时,出现以下错误
Exception: Python in worker has different version 3.4 than that in driver 3.7, PySpark cannot run with different minor versions.Please check environment variables PYSPARK_PYTHON and PYSPARK_DRIVER_PYTHON are correctly set.
有什么想法吗?
这是由于 master 和 worker 之间 python 版本的差异。默认情况下,jupyter image
安装最新版本的 miniconda,它使用 python3.7。但是,worker 仍然使用默认的 python3.6。
解决方法:
- 在创建主节点时指定 miniconda 版本,即在主节点中安装 python3.6
gcloud dataproc clusters create example-cluster --metadata=MINICONDA_VERSION=4.3.30
注:
- 可能需要更新以拥有更可持续的环境管理解决方案
我们现在修复了它——感谢 @brotich 的中间解决方法。查看 #300.
中的讨论
PR #306 保持 python 与已安装的相同版本 (3.6),并在所有节点上安装软件包以确保主和工作 python 环境保持相同.
作为副作用,您可以通过将参数传递给 conda init 操作来更改 python 版本来选择 python 版本。例如。 --metadata 'CONDA_PACKAGES="python==3.5"'
.
PR #311 将 miniconda 固定到特定版本(当前为 4.5.4),因此我们再次避免此类问题。您可以使用 --metadata 'MINICONDA_VERSION=latest'
来使用始终下载最新 miniconda 的旧行为。
更新 SPARK 环境以使用 PYTHON 3.7:
打开一个新终端并输入以下命令:export PYSPARK_PYTHON=python3.7
这将确保工作节点使用 Python 3.7(与驱动程序相同)而不是默认的 Python 3.4
根据您拥有的 PYTHON 版本,您可能需要做一些 INSTALL/UPDATE ANACONDA:
(安装见:https://www.digitalocean.com/community/tutorials/how-to-install-anaconda-on-ubuntu-18-04-quickstart)
确保你有 anaconda 4.1.0 或更高版本。打开一个新终端并通过在新终端中输入来检查您的 conda 版本:
conda --version
正在检查 conda 版本
如果你低于anaconda 4.1.0,输入conda update conda
- 接下来我们通过输入
来检查我们是否有库nb_conda_kernels
conda list
正在检查我们是否有 nb_conda_kernels
- 如果您没有看到
nb_conda_kernels
,请输入
conda install nb_conda_kernels
正在安装nb_conda_kernels
- 如果您正在使用 Python 2 并且想要单独的 Python 3 环境,请输入以下内容
conda create -n py36 python=3.6 ipykernel
py35 是环境的名称。您可以随意命名。
或者,如果您正在使用 Python 3 并且想要一个单独的 Python 2 环境,您可以键入以下内容。
conda create -n py27 python=2.7 ipykernel
py27 是环境的名称。它使用 python 2.7.
- 确保python版本安装成功并关闭终端。打开一个新终端并输入
pyspark
。您应该会看到新的环境出现。
我使用以下命令创建了一个 dataproc 集群
gcloud dataproc clusters create datascience \
--initialization-actions \
gs://dataproc-initialization-actions/jupyter/jupyter.sh \
然而,当我提交我的 PySpark 作业时,出现以下错误
Exception: Python in worker has different version 3.4 than that in driver 3.7, PySpark cannot run with different minor versions.Please check environment variables PYSPARK_PYTHON and PYSPARK_DRIVER_PYTHON are correctly set.
有什么想法吗?
这是由于 master 和 worker 之间 python 版本的差异。默认情况下,jupyter image
安装最新版本的 miniconda,它使用 python3.7。但是,worker 仍然使用默认的 python3.6。
解决方法: - 在创建主节点时指定 miniconda 版本,即在主节点中安装 python3.6
gcloud dataproc clusters create example-cluster --metadata=MINICONDA_VERSION=4.3.30
注:
- 可能需要更新以拥有更可持续的环境管理解决方案
我们现在修复了它——感谢 @brotich 的中间解决方法。查看 #300.
中的讨论PR #306 保持 python 与已安装的相同版本 (3.6),并在所有节点上安装软件包以确保主和工作 python 环境保持相同.
作为副作用,您可以通过将参数传递给 conda init 操作来更改 python 版本来选择 python 版本。例如。 --metadata 'CONDA_PACKAGES="python==3.5"'
.
PR #311 将 miniconda 固定到特定版本(当前为 4.5.4),因此我们再次避免此类问题。您可以使用 --metadata 'MINICONDA_VERSION=latest'
来使用始终下载最新 miniconda 的旧行为。
更新 SPARK 环境以使用 PYTHON 3.7:
打开一个新终端并输入以下命令:export PYSPARK_PYTHON=python3.7
这将确保工作节点使用 Python 3.7(与驱动程序相同)而不是默认的 Python 3.4
根据您拥有的 PYTHON 版本,您可能需要做一些 INSTALL/UPDATE ANACONDA:
(安装见:https://www.digitalocean.com/community/tutorials/how-to-install-anaconda-on-ubuntu-18-04-quickstart)
确保你有 anaconda 4.1.0 或更高版本。打开一个新终端并通过在新终端中输入来检查您的 conda 版本:
conda --version
正在检查 conda 版本
如果你低于anaconda 4.1.0,输入conda update conda
- 接下来我们通过输入 来检查我们是否有库nb_conda_kernels
conda list
正在检查我们是否有 nb_conda_kernels
- 如果您没有看到
nb_conda_kernels
,请输入
conda install nb_conda_kernels
正在安装nb_conda_kernels
- 如果您正在使用 Python 2 并且想要单独的 Python 3 环境,请输入以下内容
conda create -n py36 python=3.6 ipykernel
py35 是环境的名称。您可以随意命名。
或者,如果您正在使用 Python 3 并且想要一个单独的 Python 2 环境,您可以键入以下内容。
conda create -n py27 python=2.7 ipykernel
py27 是环境的名称。它使用 python 2.7.
- 确保python版本安装成功并关闭终端。打开一个新终端并输入
pyspark
。您应该会看到新的环境出现。