AWS Glue: ETL og datakatalog
Kør serverløse ETL-job med AWS Glue, registrér tabelskemaer i Glue Data Catalogue, og crawl automatisk nye data
AWS Glue: ETL og datakatalog er en gratis AWS Solutions Architect-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i AWS Solutions Architect, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. AWS Solutions Architect-kurset indeholder 4 lektioner i alt.
Hvad er AWS Glue?
AWS Glue er en fuldt administreret, serverløs ETL-tjeneste (Extract, Transform, Load). Du skal ikke klargøre eller administrere servere — Glue tildeler automatisk Spark- eller Python-workers, når et job kører. Glue består af to hovedkomponenter: ETL-motoren til datatransformationsjob og Data Catalogue til lagring af metadata om dine datakilder og mål.
Glue Data Catalogue forklaret
Glue Data Catalogue er et centraliseret metadataregister, der er kompatibelt med Apache Hive Metastore. Det gemmer databaser, tabeller, kolonnedefinitioner, datatyper og partitionsoplysninger. Tjenester som Athena, Redshift Spectrum og EMR bruger alle det samme Data Catalogue, hvilket gør det til den eneste sandhedskilde for, hvilke data der findes, og hvor de ligger i 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: Automatisk registrering af skema
En Glue Crawler opretter forbindelse til et datalager (S3, JDBC, DynamoDB), udtager stikprøver af dataene og udleder automatisk skemaet og partitionsstrukturen. Derefter skriver eller opdaterer den tabeldefinitioner i Data Catalogue. Crawlers kan køres efter en tidsplan eller udløses efter behov. De understøtter trinvis crawling, så de kun behandler nye partitioner ved efterfølgende kørsler.
# 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-crawlerSkrivning af et Glue ETL-job
Et Glue ETL-job er et PySpark- eller Scala Spark-script, der læser fra en kilde, anvender transformationer ved hjælp af DynamicFrame-API'et og skriver til et mål. DynamicFrames udvider Spark DataFrames med fleksibelt skema: De håndterer automatisk inkonsistente datatyper og indlejret JSON. Du kan generere et grundlæggende jobscript fra Glue Studios visuelle editor.
# 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')Glue-jobworkers og DPU'er
Glue tildeler kapacitet i Data Processing Units (DPU'er). Én DPU svarer til 4 vCPU'er og 16 GB hukommelse. Du vælger en workertype (G.1X, G.2X eller G.025X til fleksibel/streaming af Spark-data) og et antal workers. Til små job skal du bruge jobtypen G.025X Python Shell, som bruger en kvart DPU og er meget omkostningseffektiv til simple transformationer.
# 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'Glue-arbejdsgange og udløsere
En Glue Workflow kæder crawlers og job sammen i en afhængighedsgraf. En crawler finder nye data, udløser derefter et job ved fuldførelse, som igen kan udløse et andet job, og så videre. Triggers kan være tidsplanbaserede (cron), hændelsesbaserede (efter behov) eller betingede (udløses, når et job lykkes eller mislykkes). Workflows giver dig en visuel DAG til dit ETL-procesforløb uden en separat orkestreringstjeneste.
# 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: Visuel ETL-builder
Glue Studio giver en træk-og-slip-grænseflade til grafisk at designe ETL-job uden manuelt at skrive PySpark-kode. Du forbinder kildenoder (S3, Catalogue-tabeller, JDBC) via transformationsnoder (filter, join, aggregér, brugerdefineret Python) med målnoder. Glue Studio genererer automatisk Spark-scriptet. Det indeholder også et dashboard for jobkørsler, hvor du kan overvåge udførelsesstatus og målinger for datakvalitet.
Glue-datakvalitet
AWS Glue Data Quality (DQDL — Data Quality Definition Language) giver dig mulighed for at skrive regler, der validerer data, mens de bevæger sig gennem et ETL-job. Regler kan kontrollere null-rater, værdiintervaller, referentiel integritet og entydighed. Hvis data ikke overholder kvalitetsreglerne, kan Glue standse jobbet eller sende ugyldige poster til en karantænesti i S3 til manuel gennemgang i stedet for lydløst at sende ødelagte data videre til den kuraterede 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 sammenlignet med andre ETL-muligheder
Til SAA-C03-eksamen skal du vide, hvornår du bør anbefale Glue frem for alternativer. Brug Glue til serverløs Spark-ETL og integration med Data Catalogue. Brug AWS Data Pipeline til orkestrering af ældre dataflytningsopgaver (primært legacy). Brug Amazon EMR, når du har brug for tilpasset konfiguration af Hadoop-/Spark-klynger eller langvarige arbejdsbelastninger. Brug Lambda til lette, hændelsesdrevne mikrotransformationer på små datamængder.
JDBC- og ikke-S3-datakilder
Glue kan oprette forbindelse til relationelle databaser via JDBC connections — RDS, Aurora, Redshift eller lokale databaser gennem en Glue VPC Connection. Du definerer en forbindelse med en JDBC-URL, legitimationsoplysninger fra Secrets Manager og en VPC-sikkerhedsgruppe. Glue bruger derefter et dedikeret netværksinterface, der placeres i dit VPC-subnet, til at nå private databaseendepunkter uden at gå via det offentlige 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"
}
}'Bogmærker: Trinvis behandling
Som standard ville et Glue-job genbehandle hver post ved hver kørsel. Glue Job Bookmarks holder styr på, hvilke inputfiler der allerede er behandlet, så efterfølgende kørsler kun henter nye data. Bogmærker er afgørende for S3-kilder, der kun tilføjer data, og hvor det samme præfiks modtager nye filer dagligt. Aktivér bogmærker i jobbets parametre med --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"}'Hurtigt tjek
Test din forståelse af AWS Solutions Architect (SAA-C03)-koncepterne fra denne lektion.
Opsummering af lektionen
I denne lektion lærte du, at AWS Glue leverer serverløs ETL via PySpark og DynamicFrame API, at Glue Crawlers automatisk finder skemaer og udfylder Data Catalogue, og at Glue Bookmarks muliggør trinvis behandling af nye S3-data. Dernæst ser vi nærmere på Amazon Athena til serverløse SQL-forespørgsler direkte på S3.
Lær AWS Solutions Architect med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 30
- Lektioner
- 120
Ofte stillede spørgsmål
Er lektionen “AWS Glue: ETL og datakatalog” gratis?
Ja — alle 3 lektioner i læringssporet AWS Solutions Architect, inklusive “AWS Glue: ETL og datakatalog”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. AWS Solutions Architect-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “AWS Glue: ETL og datakatalog”?
Kør serverløse ETL-job med AWS Glue, registrér tabelskemaer i Glue Data Catalogue, og crawl automatisk nye data Du øver dig i AWS Solutions Architect med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på AWS Solutions Architect?
Der kræves ingen tidligere erfaring. AWS Solutions Architect på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.
Hvor lang tid tager lektionen “AWS Glue: ETL og datakatalog”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne AWS Solutions Architect-lektion?
Ja. Alle AWS Solutions Architect-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Opbygning af en datasø på S3
- AWS Glue: ETL og datakatalog
- Amazon Athena: Serverløs SQL på S3
- Kinesis Streams, Firehose og analyse i realtid