Wie konfiguriere ich Amazon EMR, um einen PySpark-Job mit Python 3.4 oder 3.6 auszuführen?

Lesedauer: 2 Minute
0

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

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren