Cette page a été traduite par l'API Cloud Translation.
Switch to English

Configurer l'environnement Python du cluster

Les tâches PySpark sur Dataproc sont exécutées par un interpréteur Python sur le cluster. Le code de la tâche doit être compatible lors de l'exécution avec la version et les dépendances de l'interpréteur Python.

Vérifier la version et les modules de l'interpréteur

L'exemple de programme check_python_env.py suivant vérifie l'utilisateur Linux qui exécute la tâche, l'interpréteur Python et les modules disponibles.

import getpass
import sys
import imp

print('This job is running as "{}".'.format(getpass.getuser()))
print(sys.executable, sys.version_info)
for package in sys.argv[1:]:
  print(imp.find_module(package))

Exécutez le programme

gcloud dataproc jobs submit pyspark check_python_env.py \
    --cluster=my-cluster \
    --region=region \
    -- pandas scipy

Exemple de résultat

This job is running as "root".
('/usr/bin/python', sys.version_info(major=2, minor=7, micro=13, releaselevel='final', serial=0))
(None, '/usr/local/lib/python2.7/dist-packages/pandas', ('', '', 5))
(None, '/usr/local/lib/python2.7/dist-packages/scipy', ('', '', 5))

Environnements Python d'image Dataproc

Versions d'image 1.0, 1.1 et 1.2 de Dataproc

Dans les clusters de version d'image 1.0, 1.1 et 1.2, l'interpréteur Python par défaut est Python 2.7, situé sur l'instance de VM sous /usr/bin/python2.7. Vous pouvez installer des packages Python via l'action d'initialisation pip install. Les versions de package, comme indiqué dans l'exemple suivant, sont facultatives, mais recommandées.

Exemple

REGION=region
gcloud dataproc clusters create my-cluster \
    --image-version=1.2 \
    --region=${REGION} \
    --metadata='PIP_PACKAGES=pandas==0.23.0 scipy==1.1.0' \
    --initialization-actions=gs://goog-dataproc-initialization-actions-${REGION}/python/pip-install.sh

Si vous avez besoin d'un autre interpréteur Python, vous pouvez utiliser l'action d'initialisation conda pour installer Miniconda avec les packages Conda et PIP.

Exemple

La commande suivante crée un cluster Dataproc de version d'image 1.2 et installe la dernière version de Miniconda3 avec les packages Conda et PIP :

REGION=region
gcloud dataproc clusters create my-cluster \
    --image-version=1.2 \
    --region=${REGION} \
    --metadata='MINICONDA_VARIANT=3' \
    --metadata='MINICONDA_VERSION=latest' \
    --metadata='CONDA_PACKAGES=scipy=1.0.0 tensorflow' \
    --metadata='PIP_PACKAGES=pandas==0.23.0 scipy==1.1.0' \
    --initialization-actions=gs://goog-dataproc-initialization-actions-${REGION}/conda/bootstrap-conda.sh,gs://goog-dataproc-initialization-actions-${REGION}/conda/install-conda-env.sh

Version d'image 1.3 de Dataproc

Dans les clusters de version d'image 1.3, l'interpréteur Python par défaut est Python 2.7, installé sur l'instance de VM sous /usr/bin/python2.7. Vous pouvez installer des packages Python à l'aide de l'action d'initialisation pip install.

Exemple

REGION=region
gcloud dataproc clusters create my-cluster \
    --image-version=1.3 \
    --region=${REGION} \
    --metadata='PIP_PACKAGES=pandas==0.23.0 scipy==1.1.0' \
    --initialization-actions=gs://goog-dataproc-initialization-actions-${REGION}/python/pip-install.sh

Si vous avez besoin d'un autre interpréteur Python, vous pouvez créer un cluster avec le composant facultatif Anaconda, et utiliser l'action d'initialisation pip install pour installer les packages Conda et PIP.

Exemple

La commande suivante crée un cluster de version d'image 1.3 et installe Anaconda2, ainsi que les packages Conda et PIP :

REGION=region
gcloud beta dataproc clusters create my-cluster \
    --image-version=1.3 \
    --region=${REGION} \
    --optional-components=ANACONDA \
    --metadata='CONDA_PACKAGES=scipy=1.1.0 tensorflow' \
    --metadata='PIP_PACKAGES=pandas==0.23.0 scipy==1.1.0' \
    --initialization-actions=gs://goog-dataproc-initialization-actions-${REGION}/python/conda-install.sh,gs://goog-dataproc-initialization-actions-${REGION}/python/pip-install.sh

Lorsque vous installez le composant facultatif Anaconda, l'interpréteur Python par défaut des tâches PySpark est /opt/conda/anaconda/bin/python2.7.

Pour utiliser Python 3 comme interpréteur par défaut sur un cluster 1.3, n'utilisez pas le composant facultatif Anaconda lors de la création du cluster. Utilisez plutôt l'action d'initialisation conda pour installer Miniconda3 et les packages Conda et PIP sur le cluster.

Exemple

REGION=region
gcloud dataproc clusters create my-cluster \
    --image-version=1.3 \
    --region=${REGION} \
    --metadata='MINICONDA_VARIANT=3' \
    --metadata='MINICONDA_VERSION=latest' \
    --metadata='CONDA_PACKAGES=scipy=1.0.0 tensorflow=1.12.0' \
    --metadata='PIP_PACKAGES=pandas==0.23.0 scipy==1.1.0' \
    --initialization-actions=gs://goog-dataproc-initialization-actions-${REGION}/conda/bootstrap-conda.sh,gs://goog-dataproc-initialization-actions-${REGION}/conda/install-conda-env.sh

Version d'image 1.4 et versions ultérieures de Dataproc

Miniconda3 est installé sur les clusters Dataproc 1.4 et de version ultérieure. L'interpréteur Python par défaut est Python 3.6 pour Dataproc 1.4 et Python 3.7 pour Dataproc 1.5, situé respectivement sur l'instance de VM à /opt/conda/miniconda3/bin/python3.6 et /opt/conda/miniconda3/bin/python3.7. Python 2.7 est également disponible à l'adresse /usr/bin/python2.7.

Vous pouvez installer des packages Conda et PIP avec l'action d'initialisation conda et l'action d'initialisation pip install.

Exemple

REGION=region
gcloud dataproc clusters create my-cluster \
    --image-version=1.4 \
    --region=${REGION} \
    --metadata='CONDA_PACKAGES=scipy=1.1.0 tensorflow' \
    --metadata='PIP_PACKAGES=pandas==0.23.0 scipy==1.1.0' \
    --initialization-actions=gs://goog-dataproc-initialization-actions-${REGION}/python/conda-install.sh,gs://goog-dataproc-initialization-actions-${REGION}/python/pip-install.sh

Pour installer Anaconda3 au lieu de Miniconda3, sélectionnez le composant facultatif Anaconda, puis installez les packages Conda et PIP avec l'action d'initialisation conda. et l'action d'initialisation pip install.

Exemple

REGION=region
gcloud beta dataproc clusters create my-cluster \
    --image-version=1.4 \
    --region=${REGION} \
    --optional-components=ANACONDA \
    --metadata='CONDA_PACKAGES=scipy=1.1.0 tensorflow' \
    --metadata='PIP_PACKAGES=pandas==0.23.0 scipy==1.1.0' \
    --initialization-actions=gs://goog-dataproc-initialization-actions-${REGION}/python/conda-install.sh,gs://goog-dataproc-initialization-actions-${REGION}/python/pip-install.sh

Lorsque vous installez le composant facultatif Anaconda3, Miniconda3 est supprimé du cluster et /opt/conda/anaconda3/bin/python3.6 devient l'interpréteur Python par défaut des tâches PySpark. Vous ne pouvez pas modifier la version de l'interpréteur Python du composant facultatif.

Pour utiliser Python 2.7 comme interpréteur par défaut sur un cluster 1.4 et de version ultérieure, n'utilisez pas le composant facultatif Anaconda lors de la création du cluster. Utilisez plutôt l'action d'initialisation conda pour installer Miniconda2 et les packages Conda et PIP sur le cluster.

Exemple

REGION=region
gcloud dataproc clusters create my-cluster \
    --image-version=1.4 \
    --region=${REGION} \
    --metadata='MINICONDA_VARIANT=2' \
    --metadata='MINICONDA_VERSION=latest' \
    --metadata='CONDA_PACKAGES=scipy=1.0.0 tensorflow=1.12.0' \
    --metadata='PIP_PACKAGES=pandas==0.23.0 scipy==1.1.0' \
    --initialization-actions=gs://goog-dataproc-initialization-actions-${REGION}/conda/bootstrap-conda.sh,gs://goog-dataproc-initialization-actions-${REGION}/conda/install-conda-env.sh

Choisir un interpréteur Python pour une tâche

Si plusieurs interpréteurs Python sont installés sur votre cluster, le système exécute /etc/profile.d/effective-python.sh, qui exporte la variable d'environnement PYSPARK_PYTHON afin de choisir l'interpréteur Python par défaut pour vos tâches PySpark. Si vous avez besoin d'un interpréteur Python autre que celui par défaut pour une tâche PySpark, définissez les propriétés spark.pyspark.python et spark.pyspark.driver.python sur le numéro de version Python requis (par exemple, "python2.7" ou "python3.6").

Exemple

gcloud dataproc jobs submit pyspark check_python_env.py \
    --cluster=my-cluster \
    --region=region \
    --properties="spark.pyspark.python=python2.7,spark.pyspark.driver.python=python2.7"

Python avec sudo

Si vous vous connectez en SSH à un nœud de cluster sur lequel Miniconda ou Anaconda sont installés, lorsque vous exécutez sudo python --version, la version Python affichée peut différer de celle affichée par python --version. Cette différence de version peut se produire parce que sudo utilise le système Python par défaut /usr/bin/python, mais n'exécute pas /etc/profile.d/effective-python.sh pour initialiser l'environnement Python. Pour bénéficier d'une expérience cohérente lors de l'utilisation de sudo, recherchez le chemin d'accès Python défini dans /etc/profile.d/effective-python.sh, puis exécutez la commande env pour définir PATH sur ce chemin d'accès Python. Voici un exemple de cluster 1.4 :

sudo env PATH=/opt/conda/default/bin:${PATH} python --version