Veri Bilimi Okulu

AWS Glue ile Basit Bir ETL Uygulaması
AWS Glue ile Basit Bir ETL Uygulaması
aws_glue_simple_etl_kapak_960x637

Loading

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_id string
branch string
city string
customer_type string
gender string
product_line string
unit_price float
quantity smallint
tax5% float
Total float
Date string
Time string
Payment string
cogs float
gross_margin_percentage float
gross_income float
rating float
hour tinyint

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.

AWS Cloud Data Engineering konusunda çok daha fazlasını öğrenmek ve bir kariyer olarak seçmek isterseniz AWS Cloud Data Engineering VideoCamp programımızı tavsiye ederim.

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

 

Kaynaklar

Kapak Görseli: Ricardo Rocha on Unsplash

0

Bir yanıt yazın