Python 3.4 o 3.6 è installato sulle mie istanze del cluster Amazon EMR, ma Spark esegue Python 2.7. Voglio aggiornare Spark a Python 3.4 o 3.6.
Breve descrizione
Nella maggior parte delle versioni di rilascio di Amazon EMR, le istanze del cluster e le applicazioni di sistema utilizzano diverse versioni di Python per impostazione predefinita:
- Versioni di rilascio 4.6.0-5.19.0 di Amazon EMR: Python 3.4 è installato sulle istanze del cluster. Python 2.7 è l'impostazione predefinita del sistema.
- Versioni di rilascio 5.20.0 e successive di Amazon EMR: Python 3.6 è installato sulle istanze del cluster. Per 5.20.0-5.29.0, Python 2.7 è l'impostazione predefinita del sistema. Per la versione 5.30.0 e successive di Amazon EMR, Python 3 è l'impostazione predefinita di sistema.
Per aggiornare la versione di Python utilizzata da PySpark, punta la variabile di ambiente PYSPARK_PYTHON per la classificazione spark-env alla directory in cui è installato Python 3.4 o 3.6.
Risoluzione
Su un cluster in esecuzione
Versione di rilascio 5.21.0 e successive di Amazon EMR
Invia una richiesta di riconfigurazione con un oggetto di configurazione simile al seguente:
[
{
"Classification": "spark-env",
"Configurations": [
{
"Classification": "export",
"Properties": {
"PYSPARK_PYTHON": "/usr/bin/python3"
}
}
]
}
]
Versione di rilascio 4.6.0-5.20.x di Amazon EMR
-
Connettiti al nodo principale tramite SSH.
-
Esegui il seguente comando per modificare l'ambiente Python predefinito:
sudo sed -i -e '$a\export PYSPARK_PYTHON=/usr/bin/python3' /etc/spark/conf/spark-env.sh
- Esegui il comando pyspark per confermare che PySpark stia utilizzando la versione di Python corretta:
[hadoop@ip-X-X-X-X conf]$ pyspark
L'output mostra che PySpark ora utilizza la stessa versione di Python installata sulle istanze del cluster. Esempio:
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 utilizza la nuova configurazione per il prossimo lavoro di PySpark.
Su un nuovo cluster
Aggiungi un oggetto di configurazione simile al seguente quando avvii un cluster utilizzando la versione di rilascio 4.6.0 o successiva di Amazon EMR:
[
{
"Classification": "spark-env",
"Configurations": [
{
"Classification": "export",
"Properties": {
"PYSPARK_PYTHON": "/usr/bin/python3"
}
}
]
}
]
Informazioni correlate
Configura Spark
Apache Spark
Documentazione PySpark