

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Verwenden von Python-Bibliotheken mit EMR Serverless
<a name="using-python-libraries"></a>

Wenn Sie PySpark Jobs auf Amazon EMR Serverless-Anwendungen ausführen, packen Sie verschiedene Python-Bibliotheken als Abhängigkeiten. Verwenden Sie dazu native Python-Funktionen, erstellen Sie eine virtuelle Umgebung oder konfigurieren Sie Ihre PySpark Jobs direkt für die Verwendung von Python-Bibliotheken. Diese Seite behandelt jeden Ansatz.

## Verwendung nativer Python-Funktionen
<a name="using-native-python-features"></a>

Wenn Sie die folgende Konfiguration festlegen, verwenden Sie sie, PySpark um Python-Dateien (`.py`), gezippte Python-Pakete (`.zip`) und Egg-Dateien (`.egg`) auf Spark-Executoren hochzuladen.

```
--conf spark.submit.pyFiles=s3://amzn-s3-demo-bucket/EXAMPLE-PREFIX/<.py|.egg|.zip file>
```

Weitere Informationen zur Verwendung virtueller Python-Umgebungen für PySpark Jobs finden Sie unter [Verwenden PySpark nativer Funktionen](https://spark.apache.org/docs/latest/api/python/tutorial/python_packaging.html#using-pyspark-native-features).

Wenn Sie EMR Notebook verwenden, können Sie die Python-Abhängigkeit in Ihrem Notebook verfügbar machen, indem Sie den folgenden Code ausführen:

```
    %%configure -f
 {
    "conf": {
    "spark.submit.pyFiles":"s3:///amzn-s3-demo-bucket/EXAMPLE-PREFIX/<.py|.egg|.zip file>
                   }
 }
```

## Aufbau einer virtuellen Python-Umgebung
<a name="building-python-virtual-env"></a>

Um mehrere Python-Bibliotheken für einen PySpark Job zu paketieren, erstellen Sie isolierte virtuelle Python-Umgebungen.

1. Verwenden Sie die folgenden Befehle, um die virtuelle Python-Umgebung zu erstellen. Das gezeigte Beispiel installiert die Pakete `scipy` und `matplotlib` in ein virtuelles Umgebungspaket und kopiert das Archiv an einen Amazon S3 S3-Speicherort.
**Wichtig**  
Sie müssen die folgenden Befehle in einer ähnlichen Amazon Linux 2-Umgebung mit derselben Version von Python ausführen, die Sie in EMR Serverless verwenden, d. h. Python 3.7.10 für Amazon EMR Version 6.6.0. Ein Beispiel für ein Dockerfile finden Sie im [EMR Serverless](https://github.com/aws-samples/emr-serverless-samples/tree/main/examples/pyspark/dependencies) Samples Repository. GitHub 

   ```
   # initialize a python virtual environment
   python3 -m venv pyspark_venvsource
   source pyspark_venvsource/bin/activate
   
   # optionally, ensure pip is up-to-date
   pip3 install --upgrade pip
   
   # install the python packages
   pip3 install scipy
   pip3 install matplotlib
   
   # package the virtual environment into an archive
   pip3 install venv-pack
   venv-pack -f -o pyspark_venv.tar.gz
   
   # copy the archive to an S3 location
   aws s3 cp pyspark_venv.tar.gz s3://amzn-s3-demo-bucket/EXAMPLE-PREFIX/
   
   # optionally, remove the virtual environment directory
   rm -fr pyspark_venvsource
   ```

1. Reichen Sie den Spark-Job mit den für die Verwendung der virtuellen Python-Umgebung festgelegten Eigenschaften ein. 

   ```
   --conf spark.archives=s3://amzn-s3-demo-bucket/EXAMPLE-PREFIX/pyspark_venv.tar.gz#environment 
   --conf spark.emr-serverless.driverEnv.PYSPARK_DRIVER_PYTHON=./environment/bin/python
   --conf spark.emr-serverless.driverEnv.PYSPARK_PYTHON=./environment/bin/python 
   --conf spark.executorEnv.PYSPARK_PYTHON=./environment/bin/python
   ```

   Beachten Sie, dass, wenn Sie die ursprüngliche Python-Binärdatei nicht überschreiben, die zweite Konfiguration in der vorherigen Reihenfolge der Einstellungen verwendet wird`--conf spark.executorEnv.PYSPARK_PYTHON=python`.

   Weitere Informationen zur Verwendung virtueller Python-Umgebungen für PySpark Jobs finden Sie unter [Virtualenv verwenden](https://spark.apache.org/docs/latest/api/python/tutorial/python_packaging.html#using-virtualenv). Weitere Beispiele für das Einreichen von Spark-Jobs finden Sie unter. [Verwenden von Spark-Konfigurationen bei der Ausführung von EMR Serverless-Jobs](jobs-spark.md)

## PySpark Jobs für die Verwendung von Python-Bibliotheken konfigurieren
<a name="configuring-pyspark-jobs"></a>

Mit den Amazon EMR-Versionen 6.12.0 und höher können Sie serverlose PySpark EMR-Jobs direkt so konfigurieren, dass sie beliebte Data-Science-Python-Bibliotheken wie [Pandas](https://pandas.pydata.org/docs/user_guide/index.html) verwenden [NumPy](https://numpy.org/doc/stable/user/index.html), und das ohne zusätzliche Einrichtung. [PyArrow](https://arrow.apache.org/docs/python/index.html)

Die folgenden Beispiele zeigen, wie jede Python-Bibliothek für einen PySpark Job gepackt wird.

------
#### [ NumPy ]

NumPy ist eine Python-Bibliothek für wissenschaftliches Rechnen, die multidimensionale Arrays und Operationen für Mathematik, Sortierung, Zufallssimulation und grundlegende Statistik bietet. Führen Sie zur Verwendung NumPy den folgenden Befehl aus:

```
import numpy
```

------
#### [ pandas ]

pandas ist eine Python-Bibliothek, auf NumPy der aufgebaut ist. Die Pandas-Bibliothek bietet Datenwissenschaftlern Datenstrukturen und [DataFrame](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html)Datenanalysetools. Führen Sie den folgenden Befehl aus, um Pandas zu verwenden:

```
import pandas
```

------
#### [ PyArrow ]

PyArrow ist eine Python-Bibliothek, die spaltenförmige Daten im Speicher verwaltet, um die Arbeitsleistung zu verbessern. PyArrow basiert auf der sprachübergreifenden Entwicklungsspezifikation von Apache Arrow, einer Standardmethode zur Darstellung und zum Austausch von Daten in einem Spaltenformat. Führen Sie zur Verwendung PyArrow den folgenden Befehl aus:

```
import pyarrow
```

------