如何在 google 的 dataproc pyspark 上 运行 python3
How to run python3 on google's dataproc pyspark
我想通过 Google Cloud Platform dataproc 运行 pyspark 作业,但我不知道如何将 pyspark 设置为 运行 python3 而不是默认为 2.7。
我能找到的最好的方法是添加这些 initialization commands
但是,当我 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
位于 google 存储空间; 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
我找到了这个 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
您还可以使用 Conda init 操作来设置 Python3 并可选择安装 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
Configure the Dataproc cluster's Python environment解释的很详细。基本上,你需要在 1.4 之前的 init 动作,默认是 Python3 from Miniconda3 in 1.4+.
有几种方法可以 select python pyspark 的解释器。
1.If 您要将 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.Otherwise 还可以通过 --properties
指定 python 版本,以便在将 pyspark 作业提交到 dataproc 集群时使用。 python版本可以通过以下方式传递:
--properties spark.pyspark.python=python3.7,spark.pyspark.driver=python3.7
我想通过 Google Cloud Platform dataproc 运行 pyspark 作业,但我不知道如何将 pyspark 设置为 运行 python3 而不是默认为 2.7。
我能找到的最好的方法是添加这些 initialization commands
但是,当我 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
位于 google 存储空间; 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
我找到了这个 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
您还可以使用 Conda init 操作来设置 Python3 并可选择安装 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
Configure the Dataproc cluster's Python environment解释的很详细。基本上,你需要在 1.4 之前的 init 动作,默认是 Python3 from Miniconda3 in 1.4+.
有几种方法可以 select python pyspark 的解释器。
1.If 您要将 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.Otherwise 还可以通过 --properties
指定 python 版本,以便在将 pyspark 作业提交到 dataproc 集群时使用。 python版本可以通过以下方式传递:
--properties spark.pyspark.python=python3.7,spark.pyspark.driver=python3.7