AWS Glue: ETL i katalog danych
Uruchamiać bezserwerowe zadania ETL za pomocą AWS Glue, rejestrować schematy tabel w Glue Data Catalogue oraz automatycznie indeksować nowe dane.
AWS Glue: ETL i katalog danych to bezpłatna lekcja AWS Solutions Architect na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AWS Solutions Architect, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AWS Solutions Architect zawiera 4 lekcji w sumie.
Czym jest AWS Glue?
AWS Glue to w pełni zarządzana, bezserwerowa usługa ETL (Extract, Transform, Load). Nie trzeba udostępniać ani zarządzać żadnymi serwerami — Glue automatycznie przydziela procesory Spark lub Python, gdy uruchamiane jest zadanie. Glue składa się z dwóch głównych elementów: silnika ETL do zadań transformacji danych oraz Data Catalogue do przechowywania metadanych dotyczących źródeł i miejsc docelowych danych.
Wyjaśnienie Glue Data Catalogue
Glue Data Catalogue to centralne repozytorium metadanych zgodne z Apache Hive Metastore. Przechowuje bazy danych, tabele, definicje kolumn, typy danych oraz informacje o partycjach. Usługi takie jak Athena, Redshift Spectrum i EMR korzystają z tego samego Data Catalogue, dzięki czemu jest ono jednym źródłem prawdy na temat tego, jakie dane istnieją i gdzie znajdują się w 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: automatyczne wykrywanie schematu
Glue Crawler łączy się z magazynem danych (S3, JDBC, DynamoDB), pobiera próbkę danych i automatycznie ustala schemat oraz strukturę partycji. Następnie zapisuje lub aktualizuje definicje tabel w Data Catalogue. Crawlers można uruchamiać zgodnie z harmonogramem lub na żądanie. Obsługują przyrostowe przeszukiwanie, dzięki czemu podczas kolejnych uruchomień przetwarzają tylko nowe partycje.
# 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-crawlerPisanie zadania Glue ETL
Zadanie Glue ETL to skrypt PySpark lub Scala Spark, który odczytuje dane ze źródła, stosuje transformacje za pomocą interfejsu API DynamicFrame i zapisuje wyniki w miejscu docelowym. DynamicFrames rozszerzają Spark DataFrames o elastyczność schematu: automatycznie obsługują niespójne typy danych i zagnieżdżony JSON. Szablonowy skrypt zadania można wygenerować w wizualnym edytorze 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')Procesory zadań Glue i DPU
Glue przydziela pojemność w postaci Data Processing Units (DPU). Jedna DPU odpowiada 4 vCPU i 16 GB pamięci. Należy wybrać typ procesora (G.1X, G.2X lub G.025X dla trybu flex/strumieniowania Spark) oraz liczbę procesorów. W przypadku małych zadań użyj typu zadania G.025X Python Shell, który wykorzystuje ćwierć DPU i jest bardzo opłacalny przy prostych transformacjach.
# 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'Przepływy pracy i wyzwalacze Glue
Glue Workflow łączy crawlers i zadania w graf zależności. Crawler wykrywa nowe dane, następnie po zakończeniu uruchamia zadanie, które może uruchomić kolejne zadanie itd. Triggers mogą być harmonogramowane (cron), oparte na zdarzeniach (na żądanie) lub warunkowe (uruchamiane po pomyślnym albo nieudanym zakończeniu zadania). Workflows zapewniają wizualny DAG dla potoku ETL bez potrzeby korzystania z oddzielnej usługi orkiestracji.
# 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: wizualny kreator ETL
Glue Studio udostępnia interfejs typu przeciągnij i upuść do graficznego projektowania zadań ETL bez ręcznego pisania kodu PySpark. Łączysz węzły źródłowe (S3, tabele Catalogue, JDBC) przez węzły transformacji (filtrowanie, łączenie, agregowanie, własny kod Python) z węzłami docelowymi. Glue Studio automatycznie generuje skrypt Spark. Udostępnia również panel uruchomień zadań do monitorowania stanu wykonania i metryk jakości danych.
Jakość danych w Glue
AWS Glue Data Quality (DQDL — Data Quality Definition Language) umożliwia pisanie reguł sprawdzających dane przepływające przez zadanie ETL. Reguły mogą kontrolować odsetek wartości null, zakresy wartości, integralność referencyjną i unikatowość. Jeśli dane nie spełnią reguł jakości, Glue może zatrzymać zadanie lub skierować nieprawidłowe rekordy do ścieżki kwarantanny w S3 w celu ręcznej kontroli, zamiast po cichu przekazać uszkodzone dane do strefy curated.
# 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 inne opcje ETL
Na egzamin SAA-C03 należy wiedzieć, kiedy zalecić Glue zamiast rozwiązań alternatywnych. Użyj Glue do bezserwerowego ETL w Spark oraz integracji z Data Catalogue. Użyj AWS Data Pipeline do orkiestracji starszych zadań przenoszenia danych (głównie systemów legacy). Użyj Amazon EMR, gdy potrzebujesz niestandardowej konfiguracji klastra Hadoop/Spark lub obciążeń działających przez długi czas. Użyj Lambda do lekkich, sterowanych zdarzeniami mikrotransformacji małych ładunków danych.
JDBC i źródła danych inne niż S3
Glue może łączyć się z relacyjnymi bazami danych za pośrednictwem połączeń JDBC — RDS, Aurora, Redshift lub baz danych lokalnych za pośrednictwem Glue VPC Connection. Połączenie definiuje się za pomocą adresu URL JDBC, poświadczeń z Secrets Manager oraz grupy zabezpieczeń VPC. Następnie Glue korzysta z dedykowanego interfejsu sieciowego umieszczonego w podsieci VPC, aby uzyskać dostęp do prywatnych punktów końcowych baz danych bez przechodzenia przez publiczny 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"
}
}'Zakładki: przetwarzanie przyrostowe
Domyślnie zadanie Glue przetwarzałoby ponownie każdy rekord przy każdym uruchomieniu. Glue Job Bookmarks śledzą, które pliki wejściowe zostały już przetworzone, dzięki czemu kolejne uruchomienia pobierają tylko nowe dane. Zakładki są niezbędne w przypadku źródeł S3 typu append-only, gdzie codziennie w tym samym prefiksie pojawiają się nowe pliki. Włącz zakładki w parametrach zadania za pomocą --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"}'Szybkie sprawdzenie
Sprawdź swoją znajomość zagadnień AWS Solutions Architect (SAA-C03) omówionych w tej lekcji.
Podsumowanie lekcji
W tej lekcji nauczyli się Państwo, że: AWS Glue udostępnia bezserwerowe procesy ETL za pośrednictwem PySpark i interfejsu API DynamicFrame, Glue Crawlers automatycznie wykrywają schematy i uzupełniają Data Catalogue, a Glue Bookmarks umożliwiają przyrostowe przetwarzanie nowych danych w S3. W następnej części omówimy Amazon Athena, które umożliwia bezserwerowe wykonywanie zapytań SQL bezpośrednio w S3.
Często zadawane pytania
Czy lekcja „AWS Glue: ETL i katalog danych” jest bezpłatna?
Tak — pełny tekst „AWS Glue: ETL i katalog danych” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AWS Solutions Architect, przejdź na CoddyKit PRO. Kurs AWS Solutions Architect zawiera 4 lekcji w sumie.
Co nauczysz się w „AWS Glue: ETL i katalog danych”?
Uruchamiać bezserwerowe zadania ETL za pomocą AWS Glue, rejestrować schematy tabel w Glue Data Catalogue oraz automatycznie indeksować nowe dane. Ćwiczysz AWS Solutions Architect z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć AWS Solutions Architect?
Nie wymagamy żadnego doświadczenia. AWS Solutions Architect w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „AWS Glue: ETL i katalog danych”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji AWS Solutions Architect?
Tak. Każda lekcja AWS Solutions Architect zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Budowanie jeziora danych w S3
- AWS Glue: ETL i katalog danych
- Amazon Athena: bezserwerowy SQL w S3
- Strumienie Kinesis, Firehose i analityka w czasie rzeczywistym