由于python版本而在运行PySpark DataProc Job时出错

时间:2018-07-19 15:58:35

标签: python-3.x apache-spark google-cloud-dataproc

我使用以下命令创建一个dataproc集群

gcloud dataproc clusters create datascience \
--initialization-actions \
    gs://dataproc-initialization-actions/jupyter/jupyter.sh \

但是,当我提交我的PySpark作业时,出现以下错误

  

异常:worker中的Python版本与驱动程序3.7中的Python版本不同,PySpark无法以其他次要版本运行。请检查环境变量PYSPARK_PYTHON和PYSPARK_DRIVER_PYTHON是否正确设置。

有什么想法吗?

3 个答案:

答案 0 :(得分:4)

这是由于master和worker之间的python版本不同。默认情况下,jupyter image安装最新版本的miniconda,该版本使用python3.7版本。但是,worker仍在使用默认的python3.6。

解决方案: -在创建主节点时指定minoconda版本,即在主节点中安装python3.6

gcloud dataproc clusters create example-cluster --metadata=MINICONDA_VERSION=4.3.30

注意:

  • 可能需要更新以提供一种更可持续的环境管理解决方案

答案 1 :(得分:1)

我们现在修复了它-感谢@brotich的中间解决方法。查看#300中的讨论。

PR #306使python的版本与已安装的版本(3.6)相同,并在所有节点上安装软件包,以确保master和worker python环境保持相同。

作为副作用,您可以通过将参数传递给conda init动作来更改python版本,从而选择python版本。例如。 --metadata 'CONDA_PACKAGES="python==3.5"'

PR #311将miniconda固定到特定版本(当前为4.5.4),因此我们再次避免了此类问题。您可以使用--metadata 'MINICONDA_VERSION=latest'来使用总是下载最新的迷你图标的旧行为。

答案 2 :(得分:1)

更新SPARK环境以使用PYTHON 3.7:

打开一个新终端并键入以下命令:export PYSPARK_PYTHON=python3.7这将确保辅助节点使用Python 3.7(与驱动程序相同)而不是默认的Python 3.4

根据您使用的PYTHON版本,您可能需要安装/更新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

  1. 接下来,我们通过输入来检查是否具有库nb_conda_kernels

conda list

检查我们是否有nb_conda_kernels

  1. 如果看不到nb_conda_kernels,请输入

conda install nb_conda_kernels

安装nb_conda_kernels

  1. 如果您使用的是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。

  1. 确保已成功安装python版本并关闭终端。打开一个新终端,然后输入pyspark。您应该看到出现了新的环境。