如何在Google的dataproc pyspark上运行python3



我想通过Google Cloud Platform dataproc运行pyspark作业,但是我不知道如何设置pyspark来运行python3而不是默认的2.7。

我能找到的最好的是添加这些初始化命令

但是,当我 ssh 进入集群
时,(a(python命令仍然是 python2,(b( 由于 python 2 不兼容,
我的作业失败。

我尝试卸载 python2 并在我的 init.sh 脚本中alias python='python3'别名,但唉,没有成功。 别名似乎没有粘住。

我像这样创建集群

cluster_config = {
"projectId": self.project_id,
"clusterName": cluster_name,
"config": {
"gceClusterConfig": gce_cluster_config,
"masterConfig": master_config,
"workerConfig": worker_config,
"initializationActions": [
[{
"executableFile": executable_file_uri,
"executionTimeout": execution_timeout,
}]
],
}
}
credentials = GoogleCredentials.get_application_default()
api = build('dataproc', 'v1', credentials=credentials)
response = api.projects().regions().clusters().create(
projectId=self.project_id,
region=self.region, body=cluster_config
).execute()

我的executable_file_uri位于谷歌存储上;init.sh

apt-get -y update
apt-get install -y python-dev
wget -O /root/get-pip.py https://bootstrap.pypa.io/get-pip.py
python /root/get-pip.py
apt-get install -y python-pip
pip install --upgrade pip
pip install --upgrade six
pip install --upgrade gcloud
pip install --upgrade requests
pip install numpy

我在这里找到了答案,我的初始化脚本现在看起来像这样:

#!/bin/bash
# Install tools
apt-get -y install python3 python-dev build-essential python3-pip
easy_install3 -U pip
# Install requirements
pip3 install --upgrade google-cloud==0.27.0
pip3 install --upgrade google-api-python-client==1.6.2
pip3 install --upgrade pytz==2013.7
# Setup python3 for Dataproc
echo "export PYSPARK_PYTHON=python3" | tee -a  /etc/profile.d/spark_config.sh  /etc/*bashrc /usr/lib/spark/conf/spark-env.sh
echo "export PYTHONHASHSEED=0" | tee -a /etc/profile.d/spark_config.sh /etc/*bashrc /usr/lib/spark/conf/spark-env.sh
echo "spark.executorEnv.PYTHONHASHSEED=0" >> /etc/spark/conf/spark-defaults.conf

配置 Dataproc 集群的 Python 环境对此进行了详细解释。基本上,你需要在 1.4 之前执行初始化操作,默认是 1.4+ 中 Miniconda3 中的 Python3。

你也可以使用 Conda init 操作来设置 Python 3,并选择性地安装 pip/conda 包:https://github.com/GoogleCloudPlatform/dataproc-initialization-actions/tree/master/conda。

像这样:

gcloud dataproc clusters create foo --initialization-actions gs://dataproc-initialization-actions/conda/bootstrap-conda.sh,gs://dataproc-initialization-actions/conda/install-conda-env.sh

有几种方法可以为pyspark选择python解释器。

1.如果要将 python3 设置为默认值,请在创建 dataproc 集群时设置export PYSPARK_PYTHON=python3。我在初始化脚本中添加了几段代码。

sudo echo "export PYSPARK_PYTHON=python3" | sudo tee -a /etc/profile.d/effective-python.sh
source /etc/profile.d/effective-python.sh

2.否则,也可以在将 pyspark 作业提交到 dataproc 集群时通过--properties指定要使用的 python 版本。python版本可以通过以下方式传递:

--properties spark.pyspark.python=python3.7,spark.pyspark.driver=python3.7

最新更新