我想通过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
答案 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