AWS Glue: ETL ve Veri Kataloğu
AWS Glue ile sunucusuz ETL işleri çalıştırın, tablo şemalarını Glue Data Catalogue'a kaydedin ve yeni verileri otomatik olarak tarayın.
AWS Glue: ETL ve Veri Kataloğu, CoddyKit'te ücretsiz bir AWS Solutions Architect dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AWS Solutions Architect öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AWS Solutions Architect kursu toplamda 4 dersten oluşur.
AWS Glue Nedir?
AWS Glue, tamamen yönetilen, sunucusuz bir ETL (Çıkarma, Dönüştürme, Yükleme) hizmetidir. Hiçbir sunucuyu hazırlamanız veya yönetmeniz gerekmez — Glue, bir iş çalıştığında Spark ya da Python çalışanlarını otomatik olarak ayırır. Glue iki ana bileşenden oluşur: veri dönüştürme işleri için ETL motoru ve veri kaynakları ile hedefleri hakkındaki meta verileri depolamak için Data Catalogue.
Glue Data Catalogue Açıklaması
Glue Data Catalogue, Apache Hive Metastore ile uyumlu merkezî bir meta veri deposudur. Veritabanlarını, tabloları, sütun tanımlarını, veri türlerini ve bölüm bilgilerini depolar. Athena, Redshift Spectrum ve EMR gibi hizmetlerin tümü aynı Data Catalogue'u kullanır; böylece S3'te hangi verilerin bulunduğu ve nerede yaşadığı konusunda tek bir doğruluk kaynağı sağlar.
# 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 Crawler'ları: Şemanın Otomatik Keşfi
Bir Glue Crawler, bir veri deposuna (S3, JDBC, DynamoDB) bağlanır, verilerden örnekler alır ve şema ile bölüm yapısını otomatik olarak çıkarır. Ardından Data Catalogue içindeki tablo tanımlarını yazar veya günceller. Crawler'lar bir zamanlamayla çalıştırılabilir ya da isteğe bağlı olarak tetiklenebilir. Sonraki çalıştırmalarda yalnızca yeni bölümleri işlemeleri için artımlı taramayı desteklerler.
# 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-crawlerGlue ETL İşi Yazma
Bir Glue ETL işi, bir kaynaktan okuyan, DynamicFrame API'sini kullanarak dönüşümler uygulayan ve bir hedefe yazan PySpark veya Scala Spark betiğidir. DynamicFrames, şema esnekliği sağlayarak Spark DataFrames'i genişletir: tutarsız veri türlerini ve iç içe JSON verilerini otomatik olarak işler. Glue Studio görsel düzenleyicisinden bir temel iş betiği oluşturabilirsiniz.
# 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 İş Çalışanları ve DPU'lar
Glue kapasiteyi Data Processing Units (DPU) cinsinden ayırır. Bir DPU, 4 vCPU'ya ve 16 GB belleğe eşittir. Bir çalışan türü (G.1X, G.2X veya esnek/Spark akışı için G.025X) ve çalışan sayısı seçersiniz. Küçük işler için tek bir DPU'nun dörtte birini kullanan G.025X Python Shell iş türünü kullanın; bu tür basit dönüşümler için oldukça ekonomiktir.
# 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 İş Akışları ve Tetikleyiciler
Bir Glue Workflow, crawler'ları ve işleri bir bağımlılık grafiğinde birbirine bağlar. Bir crawler yeni verileri keşfeder, ardından tamamlanınca bir işi, sonra başka bir işi tetikler ve bu şekilde devam eder. Triggers zamanlanabilir (cron), olay tabanlı (isteğe bağlı) veya koşullu olabilir (bir iş başarılı ya da başarısız olduğunda çalışır). İş akışları, ayrı bir düzenleme hizmeti olmadan ETL işlem hattınız için görsel bir DAG sağlar.
# 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: Görsel ETL Oluşturucu
Glue Studio, PySpark kodunu elle yazmadan ETL işlerini grafiksel olarak tasarlamak için sürükle-bırak arayüzü sağlar. Kaynak düğümlerini (S3, Catalogue tabloları, JDBC), dönüştürme düğümleri (filtreleme, birleştirme, toplama, özel Python) üzerinden hedef düğümlere bağlarsınız. Glue Studio, Spark betiğini otomatik olarak oluşturur. Ayrıca çalıştırmayı izlemek ve yürütme durumunu ve veri kalitesi ölçümlerini takip etmek için bir iş çalıştırma panosu sunar.
Glue Veri Kalitesi
AWS Glue Data Quality (DQDL — Data Quality Definition Language), bir ETL işi boyunca akan verileri doğrulamak için kurallar yazmanıza olanak tanır. Kurallar boş değer oranlarını, değer aralıklarını, başvuru bütünlüğünü ve benzersizliği denetleyebilir. Veriler kalite kurallarını geçemezse Glue, işi durdurabilir veya bozuk verileri fark edilmeden curated bölgesine aktarmak yerine elle incelenmek üzere S3'teki bir karantina yoluna yönlendirebilir.
# 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 ve Diğer ETL Seçenekleri
SAA-C03 sınavı için Glue'u alternatiflere kıyasla ne zaman önermeniz gerektiğini bilin. Sunucusuz Spark ETL'si ve Data Catalogue entegrasyonu için Glue kullanın. Eski veri taşıma görevlerini (çoğunlukla eski sistemleri) düzenlemek için AWS Data Pipeline kullanın. Özel Hadoop/Spark kümesi yapılandırmasına veya uzun süre çalışan iş yüklerine ihtiyaç duyduğunuzda Amazon EMR kullanın. Küçük veri yüklerinde hafif, olay güdümlü mikro dönüşümler için Lambda kullanın.
JDBC ve S3 Dışı Veri Kaynakları
Glue, JDBC connections aracılığıyla ilişkisel veritabanlarına — RDS, Aurora, Redshift veya bir Glue VPC Connection üzerinden şirket içi veritabanlarına — bağlanabilir. JDBC URL'si, Secrets Manager'dan alınan kimlik bilgileri ve bir VPC güvenlik grubuyla bir bağlantı tanımlarsınız. Glue daha sonra genel internet üzerinden geçmeden özel veritabanı uç noktalarına ulaşmak için VPC alt ağınızın içine yerleştirilmiş özel bir ağ arayüzü kullanır.
# 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"
}
}'Yer İşaretleri: Artımlı İşleme
Varsayılan olarak bir Glue işi, her çalıştırmada her kaydı yeniden işler. Glue Job Bookmarks, hangi girdi dosyalarının işlendiğini izler; böylece sonraki çalıştırmalarda yalnızca yeni veriler alınır. Yer işaretleri, aynı ön eke her gün yeni dosyaların eklendiği yalnızca eklemeli S3 kaynakları için gereklidir. Yer işaretlerini iş parametrelerinde --job-bookmark-option job-bookmark-enable ile etkinleştirin.
# Start Glue job with bookmark enabled
aws glue start-job-run \
--job-name clean-sales \
--arguments '{"--job-bookmark-option": "job-bookmark-enable"}'Hızlı Kontrol
Bu derste ele alınan AWS Solutions Architect (SAA-C03) kavramlarını anlayıp anlamadığınızı test edin.
Ders Özeti
Bu derste şunları öğrendiniz: AWS Glue, PySpark ve DynamicFrame API aracılığıyla sunucusuz ETL sağlar, Glue Crawler'ları şemaları otomatik olarak keşfeder ve Data Catalogue'u doldurur ve Glue Bookmarks, yeni S3 verilerinin artımlı olarak işlenmesini sağlar. Sırada, doğrudan S3 üzerinde sunucusuz SQL sorgularını inceleyeceğimiz Amazon Athena var.
Sıkça Sorulan Sorular
“AWS Glue: ETL ve Veri Kataloğu” dersi ücretsiz mi?
Evet — “AWS Glue: ETL ve Veri Kataloğu” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AWS Solutions Architect kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AWS Solutions Architect kursu toplamda 4 dersten oluşur.
“AWS Glue: ETL ve Veri Kataloğu” dersinde ne öğreneceğim?
AWS Glue ile sunucusuz ETL işleri çalıştırın, tablo şemalarını Glue Data Catalogue'a kaydedin ve yeni verileri otomatik olarak tarayın. AWS Solutions Architect ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
AWS Solutions Architect öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te AWS Solutions Architect, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“AWS Glue: ETL ve Veri Kataloğu” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu AWS Solutions Architect dersinde kod yazıp çalıştırabilir miyim?
Evet. Her AWS Solutions Architect dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- S3 Üzerinde Veri Gölü Oluşturma
- AWS Glue: ETL ve Veri Kataloğu
- Amazon Athena: S3 Üzerinde Sunucusuz SQL
- Kinesis Streams, Firehose ve Gerçek Zamanlı Analiz