Kurs
Güvenlik, esneklik ve ölçeklenebilirlik nedeniyle sektörler genelinde bulut tabanlı çözümler giderek daha popüler hale geliyor. Bu çözümlerden biri de AWS Glue; bilgiye dayalı karar alma ve iş operasyonlarını optimize etmede temel bir bileşen olan veri işlemeyi basitleştirir.
Bu eğitimde, S3 kovasında saklanan CSV dosyalarını Parquet biçimine dönüştürmek gibi yaygın bir ETL (Extract, Transform, Load) görevini AWS Glue kullanarak göstereceğiz. Parquet kullanmak, hem veri işleme verimliliğini hem de sorgu performansını artırır.
AWS Glue’u, temel özelliklerini ve veri hazırlamayı otomatikleştirmenin faydalarını tanıtacağız. Ardından AWS hesabınızı kurma, IAM rolleri oluşturma ve S3 kovanıza erişimi yapılandırma adımlarını birlikte inceleyeceğiz. Son olarak, veri kümelerinizi taramak ve Parquet dosyaları üretmek için bir Glue tarayıcısı (crawler) oluşturmanıza rehberlik edeceğiz.
AWS Glue Nedir?
Uygulamalı adımlara geçmeden önce, AWS Glue’un ne olduğunu ve neden veri işleme görevleri için yararlı olduğunu anlayalım.
AWS Glue, verilerinizi analitik için hazırlamayı ve yüklemeyi kolaylaştıran, tamamen yönetilen bir ETL hizmetidir. ETL işlerini oluşturmak, çalıştırmak ve izlemek için sunucusuz bir ortam sağlar. AWS Glue, AWS Glue Data Catalog aracılığıyla verilerinizi otomatik olarak keşfeder ve profillerini çıkarır, ETL kodunu önerir ve üretir, ayrıca bağımlılık çözümleme, iş izleme ve yeniden denemeleri yöneten esnek bir zamanlayıcı sunar.
Neden AWS Glue Kullanmalı?
AWS Glue’un faydalarını anlamak, veri işleme iş akışındaki değerini takdir etmenize yardımcı olur. AWS Glue’u kullanmak için birkaç güçlü neden vardır ve bunlardan bazıları aşağıda gösterilmiştir:

Neden AWS Glue? Görsel: yazar
- Sunucusuz: Sunucu sağlama veya yönetme gereği yoktur; bu da operasyonel yükü azaltır.
- Otomatik kod üretimi: AWS Glue, ETL işleri için Python veya Scala kodunu otomatik olarak üretebilir.
- Yerleşik iş zamanlama ve izleme: Bu özellik, ETL işlerini zamanlamayı ve izlemeyi kolaylaştırır.
- Veri keşfi ve kataloglama: AWS Glue tarayıcıları verileri otomatik olarak keşfedebilir, kataloglayabilir ve analize hazırlar.
- Diğer AWS hizmetleriyle entegrasyon: Amazon S3, Amazon RDS ile sorunsuz çalışır, ve Amazon Redshift.
- Maliyet-etkin: Sadece ETL işleri çalışırken tüketilen kaynaklar için ödeme yaparsınız.
AWS Glue: Adım Adım Kılavuz
Şimdi heyecanlı kısma geldik: Glue’u, çok yaygın bir veri işleme görevi için nasıl kullanacağınızı öğrenelim: CSV dosyalarını Parquet’e dönüştürmek.
1. AWS hesap kurulumu
AWS’ye yeni başlayanlar için ilk adım bir hesap oluşturmak ve ardından yönetim konsoluna giriş yapmaktır.
- AWS’ye gidin ve kaydolun.
- Bir hesabınız olduğunda, AWS Management Console’a giriş yapın.
2. IAM rolü oluşturma
AWS Identity and Access Management (IAM), kullanıcıların AWS hizmetlerine ve kaynaklarına erişimi güvenli bir şekilde yönetmesini sağlar.
Glue’un ilgili hizmetlere erişmesine izin vermek için bir IAM rolü oluşturmamız gerekiyor. Bizim durumumuzda eriştiğimiz ana hizmet, CSV dosyalarımıza ev sahipliği yapan S3’tür.
Yeni AWS kullanıcılarının S3 gibi sistemler hakkında daha fazla bilgi edinmesi için AWS Depolama Eğitimi harika bir yoldur.
Bu IAM rolünü oluşturmanın temel adımları, Management Console’dan başlayarak aşağıda açıklanmıştır:
- IAM hizmetine gidin.
- Sol kenar çubuğunda "Roles"a tıklayın, ardından "Create role"a tıklayın.
- "Choose a use case" altında "Glue"yu seçin ve "Next: Permissions"a tıklayın.
- Aşağıdaki ilkeleri arayın ve seçin:
AWSGlueServiceRoleAmazonS3FullAccess(Not: Üretim ortamında, daha kısıtlayıcı bir ilke oluşturmalısınız).- Rolünüze bir ad verin (ör. "GlueETLRole") ve isterseniz bir açıklama ekleyin; bu zorunlu değildir. Son olarak "Create role"a tıklayın.

AWS konsolunda IAM rolü oluşturma adımları. Görsel: yazar
AWS IAM’e Kapsamlı Rehber, AWS ortamlarını güvenceye almak için IAM’in nasıl kullanılacağını, kullanıcılar, gruplar ve rollerle erişimi yönetmeyi ve sağlam güvenlik için en iyi uygulamaları adım adım açıklar.
3. S3 kova kurulumu
Girdi CSV dosyalarını ve çıktı Parquet dosyalarını Amazon S3’te depolayacağız.
Bu örnek için girdi verileri gösterim amacıyla oluşturulmuştur ve yazarın GitHub deposunda bulunabilir:
athletes.csv: Sporcularla ilgili kimlik, ad, ülke, spor dalı ve yaş gibi bilgileri içerir.events.csv: Etkinlik kimliği, spor, etkinlik adı, tarih ve mekan dahil çeşitli etkinlikleri listeler.medals.csv: Madalya bilgilerini, etkinlikleri ve sporcuları kazandıkları madalyalarla ilişkilendirir.
Şimdi S3 kovamızı aşağıdaki şekilde kurabiliriz:
- AWS Management Console’da S3 hizmetine gidin.
- "Create bucket"a tıklayın ve benzersiz bir ad verin (ör. "my-glue-csv-etl-bucket").
- Basitlik adına kovayı varsayılan ayarlarla bırakın ve kovayı oluşturun.
- Kovanızın içinde iki klasör oluşturun: "input" ve "output".

S3 kova ve klasör oluşturma akışı. Görsel: yazar
İki klasörü oluşturduktan sonra, kovanızın içeriği şöyle görünmelidir:

S3 kovası içindeki klasörlere genel bakış. Görsel: yazar
Şimdi bu girdi CSV dosyalarını "input" klasörüne yükleyebiliriz.

S3 kovası “input” klasörünün içeriği. Görsel: yazar
4. Glue tarayıcısı (crawler) oluşturma
Glue tarayıcısı, verilerimizi otomatik olarak keşfetmek ve kataloglamak için kullanılır. Bu bölüm, tüm girdi CSV dosyalarını tarayacak bir tarayıcının nasıl oluşturulacağını açıklar.
Temel adımlar aşağıda açıklanmıştır:
- AWS Management Console’da AWS Glue hizmetine gidin.
- Sol kenar çubuğunda "Data catalog" altında "Crawlers"a tıklayın.
- "Create crawler"a tıklayın.
- Tarayıcınıza bir ad verin (ör. "CSV-to-Parquet-Crawler") ve açıklama alanını boş bırakın, ardından "Next"e tıklayın.
- Veri kaynağı olarak “S3”ü belirtmemiz gerekir; bunu, tarayıcı kaynak türü olarak "Add data source "u seçip "Next"e tıklayarak yapabilirsiniz.

Konsolda AWS Glue tarayıcısı oluşturma akışı - bölüm 1. Görsel: yazar
- Veri deposu olarak "S3"ü seçin ve S3 kova yolunuzu belirtin; bunu “Browse S3”ü seçerek yapabilirsiniz. Ardından "Next"e tıklayın.
- “Crawl all sub-folders”ı seçin
- “Add an S3 data source”ı seçin, ardından "Next"e tıklayın.
- Devam etmeden önce, “S3” veri türünü işaretleyin, ardından “Next”.

Konsolda AWS Glue tarayıcısı oluşturma akışı - bölüm 2. Görsel: yazar
S3 kovasını bağladıktan sonra, Glue’un S3 kovalarına erişmesine izin vermek için daha önce oluşturduğumuz IAM rolünü bağlamamız gerekir. Rolümüzün adı “GlueETLRole”.
- “Existing IAM role” alanından rol adını seçin.
- “Next”e tıklayın.

Konsolda AWS Glue tarayıcısı oluşturma akışı - bölüm 3. Görsel: yazar
Sonraki adım bir veritabanı oluşturmaktır. Oluşturacağımız “paris_olympics_db” veritabanı, AWS Glue Data Catalog içinde CSV dosyalarımızla ilgili meta verileri depolamak ve düzenlemek için merkezi bir depo görevi görür.
Katalog, verilerin verimli şekilde keşfedilmesini sağlayacak ve sporcular, etkinlikler ve madalyalara ait verileri birleştirme ve Parquet biçimine dönüştürme için ETL sürecimizi basitleştirecektir.
Şu anda herhangi bir veritabanımız yok ve oluşturma adımları aşağıda gösterilmiştir:
- “Add database”i seçin; bu, veritabanımızı oluşturmak için yeni bir pencere açacaktır. Adını “paris_olympics_db” olarak verin, diğer her şeyi varsayılan bırakın ve “Create database”e tıklayın.

Konsolda AWS Glue tarayıcısı oluşturma akışı - bölüm 4. Görsel: yazar
Veritabanını bağladığımız orijinal sekmeden, “Target database” bölümünü yenileyin ve yeni oluşturulan veritabanını seçin. Ardından “Next”e tıklayın.

Konsolda AWS Glue tarayıcısı oluşturma akışı - bölüm 5. Görsel: yazar
Son olarak, her şeyi gözden geçirin ve “Create crawler”a tıklayın.

AWS Glue tarayıcısı “Review and create” görünümü. Görsel: yazar
Tarayıcıyı oluşturma işleminden sonra, oluşturulduğunu doğrulayan aşağıdaki sonucu görmeliyiz:

Glue tarayıcısı başarıyla oluşturuldu. Görsel: yazar
5. Glue tarayıcısını çalıştırma
Artık tarayıcımızı oluşturduğumuza göre, onu çalıştırma ve verilerimizi nasıl katalogladığını görme zamanı geldi.

Glue “Run crawler” düğmesi. Görsel: yazar
- Listeden tarayıcınızı seçin.
- "Run crawler"a tıklayın.
- Tarayıcının bitmesini bekleyin. Bu birkaç dakika sürebilir.
- Tamamlandığında, sol kenar çubuğunda "Data catalog" altında "Databases"a gidin.
- Oluşturulan veritabanına tıklayın.
- CSV veri yapınızı temsil eden bir tablo görmelisiniz.

Glue tarayıcısı yürütmesi sonucu veritabanında oluşturulan tablolara genel bakış. Görsel: yazar
6. Glue işi oluşturma ve çalıştırma
Veri kataloğumuzu oluşturduğumuza göre, şimdi CSV dosyalarımızı birleştirmek ve Parquet biçimine dönüştürmek için bir Glue işi oluşturabiliriz. Bu bölüm, Glue işinin oluşturulması adımlarını anlatır ve gerekli Python kodunu sağlar.
- Sol kenar çubuğunda AWS Glue konsolunda "ETL" altında "Jobs"a gidin.
- Bir Python kodu yazmak için düzenleyici açmak üzere Script editor’ü seçin ve “Create script”e tıklayın.

Glue işi oluşturma ve çalıştırma - bölüm 1. Görsel: yazar
Betik oluşturma işlemi, işimize bir ad verebileceğimiz aşağıdaki betik sekmesini açar; bizdeki ad “CS”.
- Kod bölümüne aşağıdaki kodu yapıştırın ve ardından “Save”e tıklayın.

Glue işi oluşturma ve çalıştırma - bölüm 2. Görsel: yazar
İlgili Python kodu aşağıda verilmiştir:
import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job
from pyspark.sql.functions import col, to_date
# Initialize the Spark and Glue contexts
sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
# Set Spark configurations for optimization
spark.conf.set("spark.sql.adaptive.enabled", "true")
spark.conf.set("spark.sql.adaptive.coalescePartitions.enabled", "true")
# Get job parameters
args = getResolvedOptions(sys.argv, ['JOB_NAME'])
# Set the input and output paths
input_path = "s3://glue-csv-etl-bucket/input/"
output_path = "s3://glue-csv-etl-bucket/output/"
# Function to read CSV and write Parquet
def csv_to_parquet(input_file, output_file):
try:
# Read CSV
df = spark.read.option("header", "true") \
.option("inferSchema", "true") \
.option("mode", "PERMISSIVE") \
.option("columnNameOfCorruptRecord", "_corrupt_record") \
.csv(input_file)
# Print schema for debugging
print(f"Schema for {input_file}:")
df.printSchema()
# Convert date column if it exists (assuming it's in the format M/d/yyyy)
if "date" in df.columns:
df = df.withColumn("date", to_date(col("date"), "M/d/yyyy"))
# Write Parquet
df.write.mode("overwrite").parquet(output_file)
print(f"Successfully converted {input_file} to Parquet at {output_file}")
print(f"Number of rows processed: {df.count()}")
except Exception as e:
print(f"Error processing {input_file}: {str(e)}")
# List of files to process
files = ["athletes", "events", "medals"]
# Process each file
for file in files:
input_file = f"{input_path}{file}.csv"
output_file = f"{output_path}{file}_parquet"
csv_to_parquet(input_file, output_file)
job.commit()
print("Job completed.")
Kodda neler olduğuna kısaca bakalım:
- İçe aktarımlar: AWS Glue, PySpark ve Python’un standart kitaplığından gereken kütüphaneler içe aktarılır.
- Başlatma: Spark ve Glue bağlamları başlatılır ve optimizasyon için Spark yapılandırmaları ayarlanır.
- İş parametreleri: Komut satırı argümanlarından özellikle iş adı olacak şekilde parametreler alınır.
- Yollar: S3 kovasındaki CSV ve Parquet dosyaları için giriş ve çıkış yolları tanımlanır.
- Fonksiyon tanımı:
csv_to_parquet()fonksiyonu bir CSV dosyasını okur, şemasını yazdırır, varsa bir tarih sütununu dönüştürür ve veriyi Parquet dosyası olarak yazar. İşleme sırasında istisnaları ele alır. - Dosya işleme:
athletes,events,medalsdosyalarından oluşan bir liste, her dosya içincsv_to_parquet()fonksiyonu çağrılarak işlenir. - İşi tamamlama: İş commit edilir ve bir tamamlanma mesajı yazdırılır.
İşi çalıştırmadan önce, “Job details” bölümünde aşağıdaki ek yapılandırmaları doldurmamız gerekir:
- İşin çalıştırılmasına izin vermek için daha önce oluşturduğumuz IAM rolünü belirtin.
- İş “Type”ını “Spark” olarak ayarlayın, kalan alanları varsayılan bırakın ve “Save”.
- Ardından işi çalıştırın!

Glue işi oluşturma ve çalıştırma - bölüm 3. Görsel: yazar
İşi başarıyla çalıştırdıktan sonra, yürütmenin durumu hakkında daha fazla ayrıntı görebiliriz:

AWS Glue iş çalıştırma ayrıntıları görünümü. Görsel: yazar
Çalıştırma ayrıntılarına erişmek ve bunları izlemek, verimli ve güvenilir veri hatlarını sürdürmek için önemlidir. Bu metrikler değerli içgörüler sunar ve aşağıdaki konularda yardımcı olur:
- Performans optimizasyonu: Yürütme sürelerini izleyerek iş verimliliğini ve kaynak tahsisini iyileştirin.
- Maliyet yönetimi: Kaynak kullanımını (DPU’lar, işçiler) bütçeyle uyumlu olacak şekilde izleyin ve harcamaları optimize edin.
- Kapasite planlama: Kaynak ihtiyaçlarını öngörmek ve ölçeklenebilirlik planlamak için yürütme metriklerini kullanın.
Bu işin başarılı bir şekilde yürütülmesi, her CSV dosyasını karşılık gelen Parquet dosyasına dönüştürdü ve aşağıda gösterildiği gibi “output” klasörüne kaydetti:
- Solda, orijinal CSV dosyasıyla aynı ada sahip klasörler var.
- Sağ tarafta ise her CSV dosyasına karşılık gelen Parquet dosyaları bulunur.

S3 kovası içindeki output klasörünün içeriği. Görsel: yazar
Sonuç ve Sonraki Adımlar
Bu eğitim, AWS Glue’u ve özelliklerini ele aldı. AWS ortamını kurma ve AWS Glue arayüzünü keşfetme konusunda size rehberlik etti. Ayrıca verileri kataloglamak için bir Glue tarayıcısı oluşturmayı, dönüştürmek için bir Glue işi oluşturmayı ve CSV dosyalarını başarıyla Parquet biçimine dönüştürmeyi gösterdi.
Öğrendiklerinizi, iş akışlarını otomatikleştirmek için tetikleyiciler kurarak, hata yönetimi ve günlüklemeyi uygulayarak ve Parquet dosyalarını daha da iyi performans için optimize ederek genişletebilirsiniz. Verilerinizi AWS Athena veya Amazon Redshift Spectrum ile sorgulamayı da keşfedebilirsiniz.
Ayrıca, gereksiz ücretlerden kaçınmak için AWS kullanımınızı ve maliyetlerinizi izleyin ve artık ihtiyaç duyulmadığında kaynakları temizleyin.
Introduction to AWS ve AWS Cloud Technology and Services kursları, ileri öğrenim için mükemmel sonraki adımlar olabilir!
İlki, AWS ve bulut bilişim için sağlam bir temel sunar; yeni başlayanlar veya temel kavramları tazelemek isteyenler için idealdir. İkincisi ise uygulamalı öğrenime odaklanır ve AWS hizmetleri konusundaki pratik bilginizi derinleştirmenize yardımcı olur.
SSS
Parquet dosya performansını optimize etmek için en iyi uygulamalar nelerdir?
Parquet dosya performansını optimize etmek için dosya boyutlarını ayarlamayı (ideal olarak 128 MB ile 1 GB arası), verilerinizi verimli sorgulama için bölümlemeyi ve doğru sıkıştırma kodeğini seçmeyi (Snappy veya Gzip gibi) değerlendirin. Bu stratejiler, AWS Athena gibi araçlarla büyük veri kümeleriyle çalışırken I/O’yu azaltır ve sorgu hızlarını artırır.
AWS Glue işlerinde hata yönetimi ve günlüklemeyi nasıl uygularım?
AWS Glue, Amazon CloudWatch ile entegredir ve iş durumunu, hataları ve özel günlükleri izlemenizi sağlar. Glue işlerinizi, performansı izlemeyi, sorun gidermeyi ve ETL süreçlerinin sorunsuz yürütülmesini kolaylaştırmak için günlükleri CloudWatch’a yazacak şekilde yapılandırabilirsiniz.
CSV’den Parquet’e dönüştürmenin ötesinde AWS Glue’un yaygın kullanım alanları nelerdir?
AWS Glue çok yönlüdür ve veri tekilleştirme, veri zenginleştirme ve şema dönüşümleri gibi görevleri gerçekleştirebilir. Genellikle birden fazla kaynaktan (örn. RDS, S3, Redshift) verileri tek bir biçimde birleştirmek, makine öğrenimi modelleri için verileri hazırlamak ve veri gölü dönüşümleri yapmak için kullanılır.
AWS Glue, Apache Airflow veya Databricks gibi diğer ETL araçlarıyla nasıl karşılaştırılır?
AWS Glue, tamamen yönetilen, sunucusuz bir ETL hizmetidir; Apache Airflow ise daha fazla yapılandırma ve altyapı yönetimi gerektiren, açık kaynaklı bir iş akışı orkestrasyon aracıdır. Öte yandan Databricks, büyük ölçekli veri analitiği ve makine öğrenimi için tasarlanmıştır. AWS Glue, kullanım kolaylığı ve diğer AWS hizmetleriyle entegrasyon için harikadır; ancak çok karmaşık iş akışları için Airflow veya Databricks gibi araçlar daha fazla esneklik sunabilir.
AWS Glue işlerini tetikleyicilerle nasıl otomatikleştirebilirim?
AWS Glue’daki tetikleyiciler, işleri belirli zamanlarda veya S3 kovasına yeni veri geldiğinde olduğu gibi belirli olaylardan sonra çalıştırarak ETL iş akışlarını otomatikleştirmenizi sağlar. AWS Glue konsolu üzerinden zamana veya olaylara dayalı tetikleyiciler ayarlayabilir, böylece manuel müdahale olmadan kesintisiz veri işleme sağlayabilirsiniz.
Bilgisini paylaşmaktan ve başkalarına katkı sunmaktan keyif alan, çok yönlü bir veri bilimci olan Zoumana, YouTube’da içerik üretiyor ve Medium’da önde gelen teknoloji yazarları arasında yer alıyor. Konuşmaktan, kod yazmaktan ve öğretmekten büyük zevk alıyor. Zoumana’nın iki yüksek lisans derecesi bulunuyor: İlki Fransa, Paris’te Makine Öğrenmesi odaklı Bilgisayar Bilimleri; ikincisi ise ABD’de Texas Tech University’den Veri Bilimi. Kariyerine Fransa’da Groupe OPEN’da Yazılım Geliştirici olarak başladı; ardından IBM’de Makine Öğrenmesi Danışmanı olarak çalıştı ve sigorta şirketleri için uçtan uca yapay zeka çözümleri geliştirdi. Paris ve Montreal merkezli ilk Sürdürülebilir YZ girişimi olan Axionable’a katıldı. Burada Veri Bilimci olarak görev yaptı ve çoğunlukla NLP kullanım örnekleri olmak üzere, Fransa, Montreal, Singapur ve İsviçre’den müşteriler için YZ ürünleri hayata geçirdi. Ayrıca zamanının %5’ini Araştırma ve Geliştirme’ye ayırdı. Hâlihazırda IFC – Dünya Bankası Grubu’nda Kıdemli Veri Bilimci olarak çalışmaktadır.

