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à.
Usare le librerie Python con Glue AWS
AWS Glue consente di installare moduli e librerie Python aggiuntivi da utilizzare con AWS Glue ETL.
Argomenti
- Installazione di librerie Python aggiuntive in AWS Glue 5.0 usando requirements.txt
- Installazione di moduli Python aggiuntivi con pip in AWS Glue 2.0 o versioni successive
- Inclusione di file Python con funzionalità native PySpark
- Script di programmazione che utilizzano trasformazioni visive
- Moduli Python già forniti in Glue AWS
- Compressione delle librerie per l’inclusione
- Caricamento delle librerie Python nei notebook AWS Glue Studio
- Caricamento di librerie Python in un endpoint di sviluppo
- Usare le librerie Python in un lavoro o JobRun
Installazione di librerie Python aggiuntive in AWS Glue 5.0 usando requirements.txt
In AWS Glue 5.0, puoi fornire lo standard di fatto per requirements.txt
gestire le dipendenze della libreria Python. A tale scopo, fornite i seguenti due parametri di lavoro:
Chiave:
--python-modules-installer-option
Valore:
-r
Chiave:
--additional-python-modules
Valore:
s3://path_to_requirements.txt
AWS I nodi Glue 5.0 caricano inizialmente le librerie python specificate inrequirements.txt
. Ecco un esempio di requirements.txt:
awswrangler==3.9.1 elasticsearch==8.15.1 PyAthena==3.9.0 PyMySQL==1.1.1 PyYAML==6.0.2 pyodbc==5.2.0 pyorc==0.9.0 redshift-connector==2.1.3 scipy==1.14.1 scikit-learn==1.5.2 SQLAlchemy==2.0.36
Installazione di moduli Python aggiuntivi con pip in AWS Glue 2.0 o versioni successive
AWS Glue utilizza Python Package Installer (pip3) per installare moduli aggiuntivi che devono essere utilizzati da Glue ETL. AWS Puoi utilizzare il parametro --additional-python-modules
con un elenco di moduli Python separati da virgole per aggiungere un nuovo modulo o modificare la versione di un modulo esistente. Puoi installare distribuzioni personalizzate di una libreria caricando la distribuzione in Amazon S3 e successivamente includendo il percorso dell'oggetto Amazon S3 nell'elenco dei moduli.
Puoi passare opzioni aggiuntive a pip3 tramite il parametro --python-modules-installer-option
. Ad esempio, è possibile passare "--upgrade"
per aggiornare i pacchetti specificati da "--additional-python-modules"
. Per altri esempi, consulta Creazione di moduli Python da una ruota per carichi di lavoro Spark ETL
Se le tue dipendenze in Python dipendono transitivamente dal codice compilato nativo, potresti riscontrare la seguente limitazione: AWS Glue non supporta la compilazione di codice nativo nell'ambiente di lavoro. Tuttavia, i job AWS Glue vengono eseguiti in un ambiente Amazon Linux 2. Potresti essere in grado di fornire le tue dipendenze native in un formato compilato tramite un file wheel distribuibile.
Ad esempio, per aggiornare o aggiungere un nuovo modulo scikit-learn
usa la seguente chiave-valore: "--additional-python-modules", "scikit-learn==0.21.3"
.
Inoltre, all'interno dell'opzione --additional-python-modules
puoi specificare un percorso Amazon S3 per un modulo ruota Python. Per esempio:
--additional-python-modules s3://aws-glue-native-spark/tests/j4.2/ephem-3.7.7.1-cp37-cp37m-linux_x86_64.whl,s3://aws-glue-native-spark/tests/j4.2/fbprophet-0.6-py3-none-any.whl,scikit-learn==0.21.3
È possibile --additional-python-modules
specificarli nel campo Job parameters della console AWS Glue o modificando gli argomenti del lavoro nell' AWS SDK. Per ulteriori informazioni sulla configurazione dei parametri di processo, consulta Utilizzo dei parametri del lavoro nei lavori AWS Glue.
Inclusione di file Python con funzionalità native PySpark
AWS Glue utilizza PySpark per includere file Python nei job AWS Glue ETL. Quando possibile, ti consigliamo di usare --additional-python-modules
per gestire le dipendenze. Puoi utilizzare il parametro del processo --extra-py-files
per includere i file Python. Le dipendenze devono essere ospitate in Amazon S3 e il valore dell'argomento deve essere un elenco delimitato da virgole di percorsi Amazon S3 senza spazi. Questa funzionalità si comporta come la gestione delle dipendenze Python che useresti con Spark. Per ulteriori informazioni sulla gestione delle dipendenze di Python in Spark, consulta la pagina Utilizzo delle funzionalità PySpark native--extra-py-files
è utile nei casi in cui il codice aggiuntivo non è incluso nel pacchetto o quando si sta migrando un programma Spark con una toolchain esistente per la gestione delle dipendenze. Affinché gli strumenti di dipendenza siano gestibili, sarà necessario raggruppare le dipendenze prima di inviarle.
Script di programmazione che utilizzano trasformazioni visive
Quando crei un lavoro AWS Glue utilizzando l'interfaccia visiva di AWS Glue Studio, puoi trasformare i tuoi dati con nodi di trasformazione dati gestiti e trasformazioni visive personalizzate. Per ulteriori informazioni sui nodi di trasformazione dei dati gestiti, consultaTrasforma i dati con trasformazioni AWS Glue gestite. Per ulteriori informazioni sulle trasformazioni visive personalizzate, vedere Trasforma i dati con trasformazioni visive personalizzate . Gli script che utilizzano trasformazioni visive possono essere generati solo quando il linguaggio del lavoro è impostato per utilizzare Python.
Quando si genera un lavoro AWS Glue utilizzando trasformazioni visive, AWS Glue Studio includerà queste trasformazioni nell'ambiente di runtime utilizzando il --extra-py-files
parametro nella configurazione del lavoro. Per ulteriori informazioni sui parametri di processo, consulta Utilizzo dei parametri del lavoro nei lavori AWS Glue. Quando si apportano modifiche a uno script o a un ambiente di runtime generato, è necessario mantenere questa configurazione del lavoro affinché lo script venga eseguito correttamente.
Moduli Python già forniti in Glue AWS
Puoi modificare la versione dei moduli disponibili con il parametro di processo --additional-python-modules
.
Compressione delle librerie per l’inclusione
A meno che una libreria non sia contenuta in un singolo file .py
, deve essere compressa in un archivio .zip
. La directory del pacchetto deve trovarsi al livello radice dell'archivio e deve contenere un file __init__.py
per il pacchetto. Python sarà in grado di importare il pacchetto nel modo normale.
Se la tua libreria è composta da un singolo modulo Python in un file .py
, non è necessario trasferirla in un file .zip
.
Caricamento delle librerie Python nei notebook AWS Glue Studio
Caricamento di librerie Python in un endpoint di sviluppo
Se utilizzi diversi set di librerie per diversi script ETL, puoi impostare un endpoint di sviluppo separato per ciascun set oppure sovrascrivere i file .zip
della libreria che l'endpoint di sviluppo carica ogni volta che si cambia script.
Puoi utilizzare la console per specificare uno o più file .zip di libreria per un endpoint di sviluppo al momento della creazione. Dopo l'assegnazione di un nome e un ruolo IAM, scegli Script Libraries and job parameters (optional) (Librerie di Script e parametri di processo -opzionale) e immetti il percorso Amazon S3 completo per i tuoi file .zip
della libreria nella casella Python library path (Percorso libreria Python). Ad esempio:
s3://bucket
/prefix/
site-packages.zip
Se lo desideri, puoi specificare più percorsi completi per i file, separandoli con virgole ma non spazi, in questo modo:
s3://bucket/prefix/lib_A.zip,s3://bucket_B/prefix/lib_X.zip
Se aggiorni questi file .zip
in un secondo momento, puoi utilizzare la console per importarli nuovamente nell'endpoint di sviluppo. Individua l'endpoint dello sviluppatore in questione, verifica la casella a esso corrispondente e scegli Update ETL libraries (Aggiorna librerie ETL) dal menu Action (Operazione).
Allo stesso modo, potete specificare i file di libreria usando AWS Glue APIs. Quando crei un endpoint di sviluppo chiamando CreateDevEndpoint azione (Python: create_dev_endpoint), puoi specificare uno o più percorsi completi per le librerie nel parametro ExtraPythonLibsS3Path
in una chiamata come la seguente:
dep = glue.create_dev_endpoint(
EndpointName="testDevEndpoint
",
RoleArn="arn:aws:iam::123456789012
",
SecurityGroupIds="sg-7f5ad1ff
",
SubnetId="subnet-c12fdba4
",
PublicKey="ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCtp04H/y...
",
NumberOfNodes=3
,
ExtraPythonLibsS3Path="s3://bucket/prefix/lib_A.zip,s3://bucket_B/prefix/lib_X.zip
")
Quando aggiorni un endpoint di sviluppo, puoi anche aggiornare le librerie caricate utilizzando un oggetto DevEndpointCustomLibraries e impostare il parametro UpdateEtlLibraries
su True
durante la chiamata UpdateDevEndpoint (update_dev_endpoint).
Usare le librerie Python in un lavoro o JobRun
Quando crei un nuovo processo nella console, puoi specificare uno o più file ZIP di libreria scegliendo Script Libraries and job parameters (optional) (Librerie di script e parametri di processo - opzionale) e immettendo percorsi di librerie Amazon S3 completi, analogamente a come faresti quando crei un endpoint di sviluppo:
s3://bucket/prefix/lib_A.zip,s3://bucket_B/prefix/lib_X.zip
Se stai chiamando CreateJob (create_job), puoi specificare uno o più percorsi completi alle librerie predefinite utilizzando il parametro predefinito --extra-py-files
, come segue:
job = glue.create_job(Name='sampleJob
',
Role='Glue_DefaultRole
',
Command={'Name': 'glueetl',
'ScriptLocation': 's3://my_script_bucket/scripts/my_etl_script.py
'},
DefaultArguments={'--extra-py-files': 's3://bucket/prefix/lib_A.zip,s3://bucket_B/prefix/lib_X.zip
'})
Quindi, quando avvii un JobRun, puoi sovrascrivere l'impostazione della libreria predefinita con una diversa:
runId = glue.start_job_run(JobName='sampleJob
',
Arguments={'--extra-py-files': 's3://bucket/prefix/lib_B.zip
'})