Comment configurer Amazon EMR pour exécuter un travail PySpark à l'aide de Python 3.4 ou 3.6 ?

Date de la dernière mise à jour : 09/05/2019

Pytho 3.4 ou 3.6 est installé sur mes instances de cluster Amazon EMR, mais Spark exécute Python 2.7. Comment mettre à niveau Spark vers Python 3.4 ou 3.6 ?

Brève description

Dans la plupart des versions d'Amazon EMR, les instances de cluster et les applications système utilisent différentes versions de Python par défaut :

  • Amazon EMR versions 4.6.0-5.19.0 : Python 3.4 est installé sur les instances de cluster. Python 2.7 est la valeur par défaut du système.
  • Amazon EMR versions 5.20.0 et ultérieures : Python 3.6 est installé sur les instances de cluster. Python 2.7 est la valeur par défaut du système.

Pour mettre à niveau la version Python utilisée par PySpark, pointez la variable d'environnement PYSPARK_PYTHON pour la classification spark-env vers le répertoire où Python 3.4 ou 3.6 est installé.

Solution

Sur un cluster en cours d'exécution

Exécutez la commande suivante pour modifier l'environnement Python par défaut :

sudo sed -i -e '$a\export PYSPARK_PYTHON=/usr/bin/python3' /etc/spark/conf/spark-env.sh

Exécutez la commande pyspark pour vérifier que PySpark utilise la version correcte de Python :

[hadoop@ip-X-X-X-X conf]$ pyspark

La sortie montre que PySpark utilise désormais la même version Python que celle installée sur les instances de cluster. Exemple :

Python 3.4.8 (default, Apr 25 2018, 23:50:36)

Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /__ / .__/\_,_/_/ /_/\_\   version 2.3.1
      /_/

Using Python version 3.4.8 (default, Apr 25 2018 23:50:36)
SparkSession available as 'spark'.

Spark utilisera la nouvelle configuration pour la prochaine tâche PySpark.

Sur un nouveau cluster

Ajoutez un objet de configuration similaire à celui ci-dessous lorsque vous lancez un cluster à l'aide d'Amazon EMR versions 4.6.0 et ultérieures :

[
  {
     "Classification": "spark-env",
     "Configurations": [
       {
         "Classification": "export",
         "Properties": {
            "PYSPARK_PYTHON": "/usr/bin/python3"
          }
       }
    ]
  }
]

Cette page vous a-t-elle été utile ?

Cette page peut-elle être améliorée ?


Vous avez besoin d’aide ?