Wie aktualisiere ich meine Python-Version auf Amazon EMR und konfiguriere PySpark-Aufträge, um die aktualisierte Python-Version zu verwenden?
Ich möchte meine Python-Version auf Amazon EMR aktualisieren und PySpark-Aufträge so konfigurieren, dass sie die aktualisierte Python-Version verwenden.
Kurzbeschreibung
Cluster-Instances und Systemanwendungen verwenden unterschiedliche Python-Versionen auf der Grundlage der folgenden Amazon EMR-Release-Versionen:
- Amazon EMR-Release-Versionen 4.6.0-5.19.0: Python 3.4 ist auf den Cluster-Instances installiert. Python 2.7 ist der Systemstandard.
- Amazon EMR-Release-Versionen 5.20.0 und höher: Python 3.6 ist auf den Cluster-Instances installiert. Für die Amazon EMR-Versionen 5.20.0-5.29.0 ist Python 2.7 der Systemstandard. Für Versionen 5.30.0 und höher ist Python 3 der Systemstandard.
- Amazon EMR-Release-Versionen 6.0.0 und höher: Python 3.7 ist auf den Cluster-Instances installiert. Python 3 ist der Systemstandard.
- Amazon EMR-Release-Versionen 7.0.0 und höher: Python 3.9 ist auf den Cluster-Instances installiert. Python 3 ist der Systemstandard.
Lösung
Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.
Um deine Python-Version zu aktualisieren, verweise die Umgebungsvariable PYSPARK_PYTHON für die spark-env-Klassifizierung auf das Verzeichnis, in dem die neue Python-Version installiert ist:
which example-python-version
Hinweis: Ersetze example-python-version durch deine neue Python-Version.
Upgrade der Python-Version für Amazon EMR, die auf Amazon EC2 ausgeführt wurde
Hinweis: Bevor du eine neue Python- und OpenSSL-Version auf den Amazon EMR-Cluster-Instances installierst, stelle sicher, dass du die folgenden Skripts testest.
Verwende das folgende Skript, um ein Upgrade auf Python 3.9 für Amazon EMR Version 6.15 durchzuführen, die auf Amazon Elastic Compute Cloud (Amazon EC2) ausgeführt wird. Du kannst das Skript auch für ein Upgrade auf Python 3.10 oder höher auf Amazon EMR Version 7.0 verwenden:
sudo yum -y install openssl-devel bzip2-devel libffi-devel xz-devel gcc sqlite-devel wget https://www.python.org/ftp/python/3.x.x/example-python3-version.tgz tar xvf example-python3-version.tgz cd example-python3-version/ ./configure --enable-optimizations sudo make altinstall
Hinweis: Ersetze example-python3-version durch deine Python 3-Version.
OpenSSL ist für ein Upgrade auf Python 3.10 oder höher auf Amazon EMR 6.15 oder älter erforderlich. Verwende das folgende Skript:
sudo yum -y install openssl-devel bzip2-devel libffi-devel xz-devel gcc sqlite-devel cd /home/hadoop/ wget https://github.com/openssl/openssl/archive/refs/tags/example-openssl11-version.tar.gz tar -xzf example-openssl11-version.tar.gz cd example-openssl11-version/ ./config --prefix=/usr --openssldir=/etc/ssl --libdir=lib no-shared zlib-dynamic make sudo make install cd /home/hadoop/ wget https://www.python.org/ftp/python/3.x.x/example-python3-version.tgz tar xvf example-python3-version.tgz cd example-python3-version/ ./configure --enable-optimizations --with-openssl=/usr sudo make altinstall
Hinweis: Ersetze example-python3-version durch deine Python 3-Version und example-openssl11-version durch deine OpenSSL 11-Version. Weitere Informationen findest du unter openssl auf der GitHub-Website.
Um die aktualisierte Version als Standardinstallation von Python 3 zu verwenden, verwende /usr/local/bin/python3.x als neuen Python-Speicherort. Das vorangehende Python-Skript ist unter /usr/local/bin/python3.x installiert und die Standard-Python-Installation ist /usr/bin/python3.
Upgrade der Python-Version auf einem Cluster, der ausgeführt wird
Hinweis: Bei Amazon EMR-Versionen 5.36.0 und älter kannst du die Python-Version auf 3.8 aktualisieren.
Amazon EMR Version 5.21.0 oder älter
Sende eine Rekonfigurationsanforderung mit 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
Führe die folgenden Schritte aus:
- Verwende SSH, um eine Verbindung zum Primärknoten herzustellen.
- Führe den folgenden Befehl aus, um die Standard-Python-Umgebung zu ändern:
Führe den folgenden Befehl aus, um dich zu vergewissern, dass PySpark die richtige Python-Version verwendet:sudo sed -i -e '$a\export PYSPARK_PYTHON=/usr/bin/python3' /etc/spark/conf/spark-env.sh
Hinweis: Ersetze example-ip-address durch deine IP-Adresse.[hadoop@example-ip-address conf]$ pyspark
Beispielausgabe: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'.
Hinweis: Die neue Konfiguration wird beim nächsten PySpark-Auftrag wirksam.
Upgrade der Python-Version auf einem neuen Cluster
Um deine Python-Version zu aktualisieren, wenn du einen Cluster auf Amazon EMR startest, füge dem von dir verwendeten Skript eine Bootstrap-Aktion hinzu.
Verwende das folgende Skript, um ein Upgrade auf Python 3.9 für Amazon EMR Version 6.15 durchzuführen, die auf Amazon EC2 ausgeführt wird. Du kannst das Skript auch für ein Upgrade auf Python 3.10 oder höher auf Amazon EMR Version 7.0 verwenden:
sudo yum -y install openssl-devel bzip2-devel libffi-devel xz-devel gcc sqlite-devel wget https://www.python.org/ftp/python/3.x.x/example-python3-version.tgz tar xvf example-python3-version.tgz cd example-python3-version/ ./configure --enable-optimizations sudo make altinstall
Hinweis: Ersetze example-python3-version durch deine Python 3-Version.
OpenSSL ist für ein Upgrade auf Python 3.10 oder höher auf Amazon EMR 6.15 und älter erforderlich. Verwende das folgende Skript:
sudo yum -y install openssl-devel bzip2-devel libffi-devel xz-devel gcc sqlite-devel cd /home/hadoop/ wget https://github.com/openssl/openssl/archive/refs/tags/example-openssl11-version.tar.gz tar -xzf example-openssl11-version.tar.gz cd example-openssl11-version/ ./config —prefix=/usr --openssldir=/etc/ssl --libdir=lib no-shared zlib-dynamic make sudo make install cd /home/hadoop/ wget https://www.python.org/ftp/python/3.x.x/example-python3-version.tgz tar xvf example-python3-version.tgz cd example-python3-version/ ./configure --enable-optimizations --with-openssl=/usr sudo make altinstall
Hinweis: Ersetze example-python3-version durch deine Python 3-Version und example-openssl11-version durch deine OpenSSL 11-Version. Weitere Informationen findest du unter openssl auf der GitHub-Website.
Füge dann ein Konfigurationsobjekt hinzu, das dem folgenden ähnelt:
[ { "Classification": "spark-env", "Configurations": [ { "Classification": "export", "Properties": { "PYSPARK_PYTHON": "<example-python-version-path>" } } ] } ]
Upgrade der Python-Version auf Amazon EMR in Amazon EKS
Hinweis: Auf Amazon Linux 2023 basierende Images enthalten al2023 im Namen. Außerdem verwenden Amazon EMR 6.13.0 und höher standardmäßig Python 3.9.16 in Images, die auf Amazon Linux 2023 basieren. Für Images, die auf Amazon Linux 2 basieren, ist Python 3.7 die Standardversion.
Um die Python-Version für Amazon EMR auf Amazon Elastic Kubernetes Service (Amazon EKS) zu aktualisieren, ist ein Docker-Image erforderlich. Wähle eine Basis-URI für deine AWS-Region aus:
FROM example-base-URI-account-id.dkr.ecr.example-region.amazonaws.com/spark/emr-6.15.0 USER root RUN yum install -y gcc openssl-devel bzip2-devel libffi-devel tar gzip wget make RUN wget https://www.python.org/ftp/python/3.x.x/example-python3-version.tgz && \ tar xzf example-python3-version.tgz && cd example-python3-version && \ ./configure --enable-optimizations && \ make altinstall USER hadoop:hadoop
Hinweis: Ersetze example-base-URI-account-id durch die Basiskonto-ID für Apache Spark-Images, example-region durch deine Region und example-python3-version durch die Python-Version.
Um ein Image zu übergeben, wenn du einen Spark-Workload abschickst, verwende Überschreibungen der Anwendungskonfiguration, einen Spark-Treiber und ein primäres Pod-Image:
{ "classification": "spark-defaults", "properties": { "spark.kubernetes.container.image": "example-account-id.dkr.ecr.example-region.amazonaws.com/example-repository" } }
Hinweis: Ersetze example-account-id durch die Konto-ID, die das erstellte Image speichert, **example-repository ** durch den Namen deines Repository, der das benutzerdefinierte Image speichert, und example-region durch deine Region.
Upgrade der Python-Version auf Amazon EMR Serverless
Um deine Python-Version in einer Amazon EMR Serverless-Anwendung zu aktualisieren, verwende ein Docker-Image, um die neue Python-Version zu installieren:
FROM public.ecr.aws/emr-serverless/spark/emr-6.9.0:latest USER root # install python 3 RUN yum install -y gcc openssl-devel bzip2-devel libffi-devel tar gzip wget make RUN wget https://www.python.org/ftp/python/3.x.x/example-python3-version.tgz && \ tar xzf example-python3-version.tgz && cd example-python3-version && \ ./configure --enable-optimizations && \ make altinstall # EMRS will run the image as hadoop USER hadoop:hadoop
Hinweis: Ersetze example-python-version durch deine Python 3-Version.
Wenn du einen Spark-Auftrag]() an eine Amazon EMR Serverless-Anwendung[ abschickst, übergebe den folgenden Pfad, um die neue Python-Version zu verwenden:
--conf spark.emr-serverless.driverEnv.PYSPARK_DRIVER_PYTHON=/usr/local/bin/python3.9 --conf spark.emr-serverless.driverEnv.PYSPARK_PYTHON=/usr/local/bin/python3.9 --conf spark.executorEnv.PYSPARK_PYTHON=/usr/local/bin/python3.9
Ähnliche Informationen
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 2 Monaten
- AWS OFFICIALAktualisiert vor 5 Monaten
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 5 Monaten