Utilizzo delle librerie Python con Serverless EMR - Amazon EMR

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo delle librerie Python con Serverless EMR

Quando esegui PySpark lavori su applicazioni Amazon EMR Serverless, puoi impacchettare varie librerie Python come dipendenze. Per fare ciò, puoi usare le funzionalità native di Python, creare un ambiente virtuale o configurare direttamente i tuoi PySpark lavori per utilizzare le librerie Python. Questa pagina descrive ogni approccio.

Utilizzo delle funzionalità native di Python

Quando imposti la seguente configurazione, puoi usarla PySpark per caricare file Python (.py), pacchetti Python compressi () e file .egg Egg .zip () negli esecutori Spark.

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

Per maggiori dettagli su come usare gli ambienti virtuali Python per i PySpark lavori, vedi Uso delle funzionalità PySpark native.

Creazione di un ambiente virtuale Python

Per impacchettare più librerie Python per un PySpark lavoro, puoi creare ambienti virtuali Python isolati.

  1. Per creare l'ambiente virtuale Python, usa i seguenti comandi. L'esempio mostrato installa i pacchetti scipy e matplotlib in un pacchetto di ambiente virtuale e copia l'archivio in una posizione Amazon S3.

    Importante

    È necessario eseguire i seguenti comandi in un ambiente Amazon Linux 2 simile con la stessa versione di Python utilizzata in EMR Serverless, ovvero Python 3.7.10 per Amazon release 6.6.0. EMR Puoi trovare un Dockerfile di esempio nel repository Serverless Samples. EMR 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
  2. Invia il job Spark con le proprietà impostate per utilizzare l'ambiente virtuale Python.

    --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

    Nota che se non sovrascrivi il binario Python originale, la seconda configurazione nella sequenza di impostazioni precedente sarà. --conf spark.executorEnv.PYSPARK_PYTHON=python

    Per ulteriori informazioni su come utilizzare gli ambienti virtuali Python per i PySpark lavori, vedere Using Virtualenv. Per altri esempi su come inviare lavori Spark, vedi. Utilizzo delle configurazioni Spark quando si EMR eseguono lavori Serverless

Configurazione dei PySpark lavori per l'utilizzo delle librerie Python

Con le EMR versioni 6.12.0 e successive di Amazon, puoi configurare direttamente i PySpark job EMR Serverless per utilizzare le librerie Python più diffuse per la scienza dei dati come panda e senza alcuna configurazione aggiuntiva. NumPyPyArrow

Gli esempi seguenti mostrano come impacchettare ogni libreria Python per un PySpark lavoro.

NumPy

NumPy è una libreria Python per il calcolo scientifico che offre array e operazioni multidimensionali per matematica, ordinamento, simulazione casuale e statistiche di base. NumPyPer utilizzarla, esegui il seguente comando:

import numpy
pandas

pandas è una libreria Python basata su. NumPy La libreria pandas fornisce ai data scientist strutture di dati e strumenti di analisi DataFramedei dati. Per usare pandas, esegui il seguente comando:

import pandas
PyArrow

PyArrow è una libreria Python che gestisce i dati colonnari in memoria per migliorare le prestazioni lavorative. PyArrow si basa sulla specifica di sviluppo multilingue di Apache Arrow, che è un modo standard per rappresentare e scambiare dati in un formato colonnare. Per utilizzarlo PyArrow, esegui il seguente comando:

import pyarrow