Python 3.4 ou 3.6 est installé sur mes instances de cluster Amazon EMR, mais Spark exécute Python 2.7. Je veux 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 principal à 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"
}
}
]
}
]
Informations connexes
Configurer Spark
Apache Spark
Documentation sur PySpark