AWS Glue: ETL e catalogo dei dati
Eseguire job ETL serverless con AWS Glue, registrare gli schemi delle tabelle nel Glue Data Catalogue e analizzare automaticamente i nuovi dati con un crawler
AWS Glue: ETL e catalogo dei dati è una lezione AWS Solutions Architect gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento AWS Solutions Architect, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso AWS Solutions Architect include 4 lezioni in totale.
Che cos'è AWS Glue?
AWS Glue è un servizio ETL (Extract, Transform, Load) serverless e completamente gestito. Non è necessario effettuare il provisioning o gestire server: Glue alloca automaticamente worker Spark o Python quando viene eseguito un job. Glue è costituito da due componenti principali: il motore ETL per i job di trasformazione dei dati e il Data Catalogue per archiviare i metadati relativi alle sorgenti e alle destinazioni dei dati.
Spiegazione del Glue Data Catalogue
Il Glue Data Catalogue è un repository centralizzato di metadati compatibile con Apache Hive Metastore. Archivia database, tabelle, definizioni delle colonne, tipi di dati e informazioni sulle partizioni. Servizi come Athena, Redshift Spectrum ed EMR utilizzano tutti lo stesso Data Catalogue, che diventa così la singola fonte attendibile per sapere quali dati esistono e dove si trovano in S3.
# List databases in the Glue Data Catalogue
aws glue get-databases --query 'DatabaseList[*].Name'
# List tables in a database
aws glue get-tables --database-name my_db --query 'TableList[*].Name'Glue Crawlers: rilevamento automatico dello schema
Un Glue Crawler si connette a un archivio dati (S3, JDBC, DynamoDB), analizza un campione dei dati e deduce automaticamente lo schema e la struttura delle partizioni. Scrive quindi nel Data Catalogue le definizioni delle tabelle o le aggiorna. I crawler possono essere eseguiti secondo una pianificazione o attivati su richiesta. Supportano il crawling incrementale, elaborando nelle esecuzioni successive solo le nuove partizioni.
# Create and start a Glue Crawler via CLI
aws glue create-crawler \
--name sales-crawler \
--role arn:aws:iam::123456789012:role/GlueRole \
--database-name my_db \
--targets '{"S3Targets": [{"Path": "s3://my-data-lake-123/landing/sales/"}]}'
aws glue start-crawler --name sales-crawlerScrittura di un job ETL Glue
Un job ETL Glue è uno script PySpark o Scala Spark che legge da una sorgente, applica trasformazioni utilizzando l'API DynamicFrame e scrive i risultati in una destinazione. I DynamicFrame estendono gli Spark DataFrame offrendo flessibilità nello schema: gestiscono automaticamente tipi di dati incoerenti e JSON annidati. È possibile generare uno script di job di base dall'editor visuale Glue Studio.
# Minimal Glue PySpark ETL job
from awsglue.context import GlueContext
from awsglue.transforms import *
from pyspark.context import SparkContext
sc = SparkContext()
glueContext = GlueContext(sc)
# Read from Data Catalogue table
source = glueContext.create_dynamic_frame.from_catalog(
database='my_db', table_name='raw_sales')
# Drop null order_id rows
cleaned = Filter.apply(frame=source, f=lambda r: r['order_id'] is not None)
# Write Parquet to curated zone
glueContext.write_dynamic_frame.from_options(
frame=cleaned,
connection_type='s3',
connection_options={'path': 's3://my-data-lake-123/curated/sales/'},
format='parquet')Worker dei job Glue e DPU
Glue alloca la capacità in Data Processing Units (DPU). Una DPU equivale a 4 vCPU e 16 GB di memoria. Scelga un tipo di worker (G.1X, G.2X o G.025X per flex/spark streaming) e un numero di worker. Per i job di piccole dimensioni, utilizzi il tipo di job G.025X Python Shell, che usa un quarto di DPU ed è molto conveniente per trasformazioni semplici.
# Create a Glue job with G.1X workers
aws glue create-job \
--name clean-sales \
--role arn:aws:iam::123456789012:role/GlueRole \
--command '{"Name": "glueetl", "ScriptLocation": "s3://scripts/clean_sales.py", "PythonVersion": "3"}' \
--worker-type G.1X \
--number-of-workers 5 \
--glue-version '4.0'Workflow e trigger Glue
Un Glue Workflow collega crawler e job in un grafo delle dipendenze. Un crawler rileva i nuovi dati, quindi al completamento attiva un job, che a sua volta può attivarne un altro, e così via. I trigger possono essere pianificati (cron), basati su eventi (su richiesta) o condizionali (attivati quando un job ha esito positivo o negativo). I workflow forniscono un DAG visivo per la pipeline ETL senza richiedere un servizio di orchestrazione separato.
# Create a schedule trigger that starts a job every night at 2 AM UTC
aws glue create-trigger \
--name nightly-clean \
--type SCHEDULED \
--schedule 'cron(0 2 * * ? *)' \
--actions '[{"JobName": "clean-sales"}]' \
--start-on-creationGlue Studio: generatore visuale di ETL
Glue Studio offre un'interfaccia drag-and-drop per progettare graficamente i job ETL senza scrivere manualmente codice PySpark. Colleghi i nodi sorgente (S3, tabelle del Catalogue, JDBC) attraverso nodi di trasformazione (filtro, join, aggregazione, Python personalizzato) ai nodi di destinazione. Glue Studio genera automaticamente lo script Spark. Offre inoltre una dashboard delle esecuzioni dei job per monitorare lo stato dell'esecuzione e le metriche sulla qualità dei dati.
Qualità dei dati in Glue
AWS Glue Data Quality (DQDL — Data Quality Definition Language) consente di scrivere regole per convalidare i dati mentre attraversano un job ETL. Le regole possono verificare i tassi di valori null, gli intervalli dei valori, l'integrità referenziale e l'univocità. Se i dati non superano le regole di qualità, Glue può interrompere il job o indirizzare i record non validi verso un percorso di quarantena in S3 per una revisione manuale, invece di trasferire silenziosamente dati corrotti nella curated zone.
# DQDL rule example for Glue Data Quality
# Reject rows where order_total is negative or null
Rules = [
IsComplete 'order_total',
ColumnValues 'order_total' >= 0
]Glue a confronto con altre opzioni ETL
Per l'esame SAA-C03, sappia quando consigliare Glue rispetto alle alternative. Utilizzi Glue per l'ETL Spark serverless e l'integrazione con il Data Catalogue. Utilizzi AWS Data Pipeline per orchestrare attività meno recenti di spostamento dei dati (principalmente legacy). Utilizzi Amazon EMR quando sono necessarie configurazioni personalizzate di cluster Hadoop/Spark o carichi di lavoro di lunga durata. Utilizzi Lambda per micro-trasformazioni leggere e basate sugli eventi su payload di piccole dimensioni.
Sorgenti dati JDBC e non S3
Glue può connettersi ai database relazionali tramite connessioni JDBC: RDS, Aurora, Redshift o database on-premises attraverso una Glue VPC Connection. Definisca una connessione con un URL JDBC, credenziali provenienti da Secrets Manager e un gruppo di sicurezza VPC. Glue utilizza quindi un'interfaccia di rete dedicata, collocata nella subnet VPC, per raggiungere gli endpoint dei database privati senza attraversare Internet.
# Create a Glue JDBC connection to RDS Aurora
aws glue create-connection \
--connection-input '{
"Name": "aurora-prod",
"ConnectionType": "JDBC",
"ConnectionProperties": {
"JDBC_CONNECTION_URL": "jdbc:mysql://aurora-cluster.cluster-xyz.us-east-1.rds.amazonaws.com:3306/sales",
"SECRET_ID": "arn:aws:secretsmanager:us-east-1:123:secret:rds-creds"
},
"PhysicalConnectionRequirements": {
"SubnetId": "subnet-abc123",
"SecurityGroupIdList": ["sg-xyz456"],
"AvailabilityZone": "us-east-1a"
}
}'Bookmark: elaborazione incrementale
Per impostazione predefinita, un job Glue rielaborerebbe ogni record a ogni esecuzione. I Glue Job Bookmarks tengono traccia dei file di input già elaborati, così le esecuzioni successive acquisiscono solo i nuovi dati. I bookmark sono essenziali per le sorgenti S3 append-only, in cui ogni giorno vengono aggiunti nuovi file allo stesso prefisso. Abiliti i bookmark nei parametri del job con --job-bookmark-option job-bookmark-enable.
# Start Glue job with bookmark enabled
aws glue start-job-run \
--job-name clean-sales \
--arguments '{"--job-bookmark-option": "job-bookmark-enable"}'Verifica rapida
Verifichi la Sua comprensione dei concetti di AWS Solutions Architect (SAA-C03) trattati in questa lezione.
Riepilogo della lezione
In questa lezione ha imparato che: AWS Glue fornisce funzionalità ETL serverless tramite PySpark e l'API DynamicFrame, i Glue Crawler individuano automaticamente gli schemi e popolano il Glue Data Catalogue e i Glue Bookmark consentono l'elaborazione incrementale dei nuovi dati S3. Ora esploreremo Amazon Athena per eseguire query SQL serverless direttamente su S3.
Domande Frequenti
La lezione «AWS Glue: ETL e catalogo dei dati» è gratuita?
Sì — il testo completo di «AWS Glue: ETL e catalogo dei dati» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso AWS Solutions Architect, passa a CoddyKit PRO. Il corso AWS Solutions Architect include 4 lezioni in totale.
Cosa imparerò in «AWS Glue: ETL e catalogo dei dati»?
Eseguire job ETL serverless con AWS Glue, registrare gli schemi delle tabelle nel Glue Data Catalogue e analizzare automaticamente i nuovi dati con un crawler Eserciti AWS Solutions Architect con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare AWS Solutions Architect?
Non è richiesta alcuna esperienza precedente. AWS Solutions Architect su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «AWS Glue: ETL e catalogo dei dati»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione AWS Solutions Architect?
Sì. Ogni lezione AWS Solutions Architect include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Creare un data lake su S3
- AWS Glue: ETL e catalogo dei dati
- Amazon Athena: SQL serverless su S3
- Kinesis Streams, Firehose e analisi in tempo reale