如何在google的dataproc pyspark上运行python3

时间:2017-08-23 15:33:13

标签: python-3.x configuration pyspark google-cloud-platform google-cloud-dataproc

我想通过Google Cloud Platform数据平台运行一个pyspark工作,但我无法弄清楚如何设置pyspark来默认运行python3而不是2.7。

我能找到的最好的就是添加这些initialization commands

然而,当我进入群集然后是 (a)python命令仍然是python2,
(b)由于python 2不兼容,我的工作失败了。

我尝试在我的init.sh脚本中卸载python2并使用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

4 个答案:

答案 0 :(得分:3)

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

#!/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

答案 1 :(得分:1)

您还可以使用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

答案 2 :(得分:0)

Configure the Dataproc cluster's Python environment对其进行了详细说明。基本上,您需要在1.4之前执行初始化操作,因为1.4的默认值是Miniconda3中的Python3。

答案 3 :(得分:0)

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

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

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

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

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