AWS Glue ile Basit Bir ETL Uygulaması

AWS Glue, birden çok kaynaktan veri keşfetmeyi, hazırlamayı, taşımayı ve entegre etmeyi kolaylaştıran sunucusuz bir veri entegrasyon hizmetidir. AWS üzerinde ETL ihtiyaçları genellikle Glue ile karşılanır. Bu yazımızda S3 üzerindeki csv dosyalarını parquet formatına çeviren basit bir AWS Glue ETL Job oluşturacağız. Parquet dosyaları analitik sorgular için CSV’ye göre daha performanslıdır ve daha az yer kaplar. Parquet formatı kullanmak hem depolama hem de sorgulama (Örn. Athena) maliyetlerini düşürür.

Örnek uygulamamızın adımları sırasıyla şöyle olacak:

  • S3 bucket oluşturup üzerinde csv ve parquet için 2 klasör oluşturma
  • CSV dosyalarını S3’e yükleme
  • AWS Glue için IAM Role oluşturma
  • AWS Glue Job oluşturma
  • AWS Glue Job çalıştırma
  • Sonuçları (parquet dosyalarını) S3 üzerinde görme

1. S3

1.1. S3 Bucket Oluşturma

Hem csv hem de parquet dosyalarını saklayacağımız S3 bucket ve bunun üzerinde 2 klasör yaratalım.

Şekil-1: S3 Bucket Oluşturma

Create bucket butonuna tıkladığımızda açılan sayfada sadece bucket ismi belirleyelim. İsimde aws-glue paterni olmasında fayda var çünkü ileride ekleyeceğimiz AWSGlueServiceRole içindeki politikalardan s3 nesleleri yaratma ve silme ile ilgili olanlarda bu patern var. Farklı bir isim verdiğimizde bu politika işlemeyeceğinden S3 için ayrıca bir role tanımlamak gerekebilir.

Şekil-2: Bucket İsmi Belirleme

1.2. S3 Bucket Üzerinde Klasörleri Oluşturma

Varsayılan ayarlarla bucket yaratabiliriz. Şimdi bu bucket üzerinde csv ve parquet dosyaları için 2 tane klasör oluşturalım.

Şekil-3: Bucket Üzerinde Klasör Yaratma

 

Şekil-4: Bucket Üzerindeki Klasörler

1.3. CSV Dosyalarını S3’e Yükleme

Buradaki csv dosyalarını bilgisayarınıza indirin ve csv_source klasörüne  yükleyin. Bir reponun tamamını değilde sadece bir klasörünü zip olarak indirmek için bu sayfayı kullanabilirsiniz.

Şekil-5: CSV Dosyalarının S3’e Yüklenmiş Hali

2. AWS Glue

2.1. Glue IAM Role Yaratma

AWS Glue job için kullanacağımız IAM Role yaratalım. Glue servisi bir entegrasyon servisi olduğu için S3 gibi bir çok farklı servis ile alış-verişi var. Amazon bunun için bir politika tanımlamış zaten. Bu politikayı kendi “Glue Job”umuza atamak işimizi görecektir. IAM servisinden;

Şekil-6: AWS Glue İçin IAM Role Yaratma

Arama penceresinden glue kelimesini aratınca  AWSGlueServiceRole politikası çıkacaktır sonuçlarda. Onu seçelim.

Şekil-7: Glue IAM Role için Policy Seçme

 

Şekil-8: Glue IAM Role İsim Verme

Create role butonuna tıklayarak role oluşturun.

2.2. Glue Job Yaratma

Şimdi Glue servisini açıp bir job yaratalım.

Şekil-9: Glue Job Yaratma

 

Bir sonraki sayfada karşımıza etl akışının görsel hali gelecek. Burada önce jon ismini (1) girelim. Ardından veri kaynağı düğümünü seçelim (2), seçince sağ menü değişecektir. Burada klasör ismini de içerecek şekilde kaynak S3 bucketi seçelim (3). Browse S3 ile (4) csv_source klasörünü (5) seçelim. Infer schema (6) butonuna tıklayalım.

Şekil-10: Data Source – S3 Bucket Ayarları

2.3. Transform Apply Mapping Düğümü

ApplyMapping düğümünü seçelim ve şemayı aşağıdaki gibi güncelleyelim.

invoice_idstring
branchstring
citystring
customer_typestring
genderstring
product_linestring
unit_pricefloat
quantitysmallint
tax5%float
Totalfloat
Datestring
Timestring
Paymentstring
cogsfloat
gross_margin_percentagefloat
gross_incomefloat
ratingfloat
hourtinyint

2.4. Data target- S3 Bucket Düğümü

Şekil-12: Data Target – S3 Bucket Ayarları

 

2.5. Job details

Şimdi kanvasın üstündeki tablardan Job details seçelim.  Sadece daha önce yarattığımız IAM Role ve workers için 2 seçmek yeterli olacaktır. Varsayılan 10 workers bizim için fazla olur.

Şekil-13: Glue Job Details Ayarları

Sağ üst köşeden önce Save ile tanımladığımız işi kaydedelim arkasından Run butonuna basarak ETL işini başlatalım.

Şekil-14: Glue Job Save ve Run

Runs tabına tıklayalım ve Job details’i inceleyelim.

Şekil-15: Glue Running Job Details

 

Refresh butonundan sonuçları yenileyelim ve Succeeded durumuna geçtiğini görelim.

Şekil-16: Glue Job Succeeded

3. Sonuçlar için S3

S3 bucket parquet_target klasörünü açıp ve sonuçları görelim. Aşağıdaki gibi parquet uzantılı dosyalar görüyorsak işin başarıyla tamamlandığını doğrulamış oluyoruz.

Şekil-17: S3 Parquet Sonuç

Dilerseniz bundan sonra bu klasörü Athena’da bir tablo olarak tanımlayıp sorgulayabilirsiniz.

Başka bir yazıda görşmek üzere hoşçakalın…

 

Kaynaklar

Kapak Görseli: Ricardo Rocha on Unsplash

Yazar Hakkında
Toplam 174 yazı
Erkan ŞİRİN
Erkan ŞİRİN
10 yılı aşkın süredir yurtiçi ve yurtdışında sektörde büyük veri mühendisliği, platform yönetimi ve makine öğrenmesi ile ilgili çalışmalar yürütmekte ve aynı zamanda birçok kurum ve şirkete danışmanlık ve eğitimler vermektedir. Çalışma alanları: Data ve MLOps platformları, gerçek zamanlı veri işleme, değişen veriyi yakalama (CDC) ve Lakehouse.
Yorumlar (Yorum yapılmamış)

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

×

Bir Şeyler Ara