Python 3.4 oder 3.6 ist auf meinen Amazon EMR-Cluster-Instances installiert, aber auf Spark läuft Python 2.7. Ich möchte Spark auf Python 3.4 oder 3.6 aktualisieren.
Kurzbeschreibung
In den meisten Amazon EMR-Versionen verwenden Cluster-Instances und Systemanwendungen standardmäßig unterschiedliche Python-Versionen:
- Amazon EMR-Versionen 4.6.0-5.19.0: Python 3.4 ist auf den Cluster-Instances installiert. Python 2.7 ist der Systemstandard.
- Amazon EMR-Versionen 5.20.0 und höher: Python 3.6 ist auf den Cluster-Instances installiert. Für 5.20.0-5.29.0 ist Python 2.7 der Systemstandard. Für Amazon EMR Version 5.30.0 und höher ist Python 3 der Systemstandard.
Um die von PySpark verwendete Python-Version zu aktualisieren, verweisen Sie die Umgebungsvariable PYSPARK_PYTHON für die spark-env-Klassifizierung auf das Verzeichnis, in dem Python 3.4 oder 3.6 installiert ist.
Behebung
Auf einem laufenden Cluster
Amazon EMR-Version 5.21.0 und höher
Senden Sie eine Rekonfigurationsanfragemit einem Konfigurationsobjekt, das dem folgenden ähnelt:
[
{
"Classification": "spark-env",
"Configurations": [
{
"Classification": "export",
"Properties": {
"PYSPARK_PYTHON": "/usr/bin/python3"
}
}
]
}
]
Amazon EMR-Version 4.6.0-5.20.x
1.Stellen Sie über SSH eine Verbindung zum Master-Knoten her.
2.Führen Sie den folgenden Befehl aus, um die Standard-Python-Umgebung zu ändern:
sudo sed -i -e '$a\export PYSPARK_PYTHON=/usr/bin/python3' /etc/spark/conf/spark-env.sh
3.Führen Sie den Befehl pyspark aus, um zu bestätigen, dass PySpark die richtige Python-Version verwendet:
[hadoop@ip-X-X-X-X conf]$ pyspark
Die Ausgabe zeigt, dass PySpark jetzt dieselbe Python-Version verwendet, die auf den Cluster-Instances installiert ist. Beispiel:
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 verwendet die neue Konfiguration für den nächsten PySpark-Job.
Auf einem neuen Cluster
Fügen Sie ein Konfigurationsobjekt ähnlich dem folgenden hinzu, wenn Sie einen Cluster mit Amazon EMR Version 4.6.0 oder höher starten:
[
{
"Classification": "spark-env",
"Configurations": [
{
"Classification": "export",
"Properties": {
"PYSPARK_PYTHON": "/usr/bin/python3"
}
}
]
}
]
Verwandte Informationen
Spark konfigurieren
Apache Spark
PySpark-Dokumentation