Comment configurer Amazon EMR pour exécuter une tâche PySpark à l'aide de Python 3.4 ou 3.6 ?

Dernière mise à jour : 06/11/2020

Python 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. Pour les versions 5.20.0 à 5.29.0, Python 2.7 est la valeur par défaut du système. Pour Amazon EMR versions 5.30.0 et ultérieures, Python 3 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é.

Résolution

Sur un cluster en cours d'exécution

Amazon EMR versions 5.21.0 et ultérieures

Soumettez une requête de reconfiguration avec un objet de configuration similaire au suivant :

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

Amazon EMR versions 4.6.0 à 5.20.x

1.    Connectez-vous au nœud maître à l'aide de SSH.

2.    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

3.    Exécutez la commande pyspark pour vérifier que PySpark utilise la bonne version 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 utilise la nouvelle configuration pour la prochaine tâche PySpark.

Sur un nouveau cluster

Ajoutez un objet de configuration semblable à l'objet suivant lorsque vous lancez un cluster sur une version d'Amazon EMR 4.6.0 ou ultérieure :

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

Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?