Come posso utilizzare le librerie Python esterne nel processo ETL di AWS Glue 1.0 o 0.9?

3 minuti di lettura
0

Desidero utilizzare una libreria Python esterna nel processo di estrazione, trasformazione e caricamento (ETL) di AWS Glue 1.0 o 0.9.

Breve descrizione

Per utilizzare una libreria esterna in un processo Spark ETL Apache, procedi come segue:

1.    Comprimi i file della libreria in un file .zip (a meno che la libreria non sia in un unico file .py).

2.    Carica il pacchetto in Amazon Simple Storage Service (Amazon S3).

3.    Usa la libreria in un processo o JobRun.

Risoluzione

L’esempio seguente mostra come utilizzare una libreria esterna in un processo Spark ETL AWS Glue 1.0 o 0.9.

Importante: se desideri utilizzare una libreria esterna in un processo AWS Glue 2.0, consulta How do I use external Python libraries in my AWS Glue 2.0 ETL job?Se desideri utilizzare una libreria esterna in un processo shell Python, segui la procedura Providing your own Python library.

1.    Crea una libreria Python 2 o Python 3 per boto3. Assicurati che la versione di AWS Glue che stai utilizzando supporti la versione di Python scelta per la libreria. La versione 1.0 di AWS Glue supporta Python 2 e Python 3 mentre la versione 0.9 di AWS Glue supporta solo Python 2.

Nota: le librerie e i moduli di estensione dei processi Spark devono essere scritti in Python. Le librerie come pandas scritte in C non sono supportate in Glue 0.9 o 1.0. Per utilizzare una libreria scritta in C, aggiorna AWS Glue almeno alla versione 2.0 e usa l'opzione --additional-python-modules. Per ulteriori informazioni, consulta How do I use external Python libraries in my AWS Glue 2.0 ETL job?

2.    Avvia un'istanza Linux di Amazon Elastic Compute Cloud (Amazon EC2).

3.    Connettiti all'istanza Linux tramite SSH.

4.    Esegui questi comandi per installare Python e Boto3. Per ulteriori informazioni, consulta la documentazione Quickstart di Boto3.

sudo yum groupinstall "Development Tools"
sudo yum -y install openssl-devel
wget https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz
tar xvf Python-3.6.9.tgz
cd Python-3.6.9/
./configure --enable-optimizations
sudo make install
sudo pip install boto3

5.    Conferma la posizione della directory site-packages di Python:

python -m site

Verrà visualizzato un output simile al seguente:

/usr/lib/python3.6/site-packages

6.    Comprimi i file della libreria esterna in un file .zip, a meno che la libreria non sia in un unico file .py. Il file.zip deve includere un file __init__.py e la directory del pacchetto deve trovarsi nel root dell'archivio. Il file __init__.py può essere vuoto. Per ulteriori informazioni, consulta Packages nella documentazione di Python.

Esempio:

cd /usr/lib/python3.6/site-packages
sudo zip -r -X "/home/ec2-user/site-packages.zip" *

7.    Carica il pacchetto in Amazon S3:

aws s3 cp /home/ec2-user/site-packages.zip s3://awsexamplebucket/

8.    Usa la libreria in un processo o JobRun.

Per utilizzare una libreria esterna in un endpoint di sviluppo, segui questa procedura:

1.    Crea il pacchetto della libreria e carica il file in Amazon S3, come spiegato in precedenza.

2.    Crea l'endpoint di sviluppo. Come percorso della libreria Python, inserisci il percorso Amazon S3 del pacchetto. Per ulteriori informazioni, consulta Loading Python libraries in a development endpoint.


Informazioni correlate

Using Python libraries with AWS Glue

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa