Airflow on Docker — Mac OS X Kurulumu ve Python ile CSV Dosyasını Postgresql DB’ye Yüklemek

Onur Taşhan
Trendyol Tech
Published in
4 min readApr 25, 2019

Merhabalar,

İlk yazımda Apache Airflow’u Docker üzerinde çalıştırmak için gerekli kurulum adımlarını anlatacağım. Kurulumdan sonra ise Python ile CSV dosyayı okuyarak bu dosyayı Postgres DB’de bir tablo olarak oluşturacağız.

docker nedir? ile ilgili görsel sonucu

İlk olarak bu linkten https://www.docker.com/products/docker-desktop Docker Desktop’ı indiriyoruz. Ve kurulumu tamamladıktan sonra Docker Desktop’ı başlatıyoruz. Aşağıdaki Mac OS için Docker’ın ayakta olma durumunu paylaşıyorum.

Docker Desktop is running

Docker çalışmaya başladıktan sonra eğer Windows kullanıcısı iseniz bu linkten https://docs.docker.com/compose/install/ Docker Compose’u linkteki adımları izleyerek kuruyoruz.

Daha sonra bu linkten https://github.com/puckel/docker-airflow repository’isini kendi lokalimize indiriyoruz.

İndirme işlemi tamamlandıktan sonra airflow Python kütüphanelerini indirmek için terminal ekranında aşağıdaki komutu çalıştırmanız gerekiyor.

pip install apache-airflow

Komutun çalışması bittikten sonra artık Airflow’u da ayağa kaldırmamız gerekiyor.

Bunun için öncelikle terminal’i açıyoruz. Ve cd komutu ile indirdiğimiz docker-airflow repository’sinin olduğu dizine geçiyoruz.

Bu dizine geçtikten sonra aşağıdaki komutu bir defalığına çalıştırıyoruz.

docker build --rm --build-arg AIRFLOW_DEPS="datadog,dask" --build-arg PYTHON_DEPS="flask_oauthlib>=0.9" -t puckel/docker-airflow .

Bu adımları da tamamladıktan sonra sıra geldi Airflow’u ayağa kaldırmaya;

Ben bu yazı da LocalExecutor kullanarak Airflow’u ayağı kaldırmayı tercih ettim. Bu nedenle terminal’de airflow reposunda iken aşağıdaki komutu çalıştırınız.

docker-compose -f docker-compose-LocalExecutor.yml up -d

Komutu çalıştırdıktan sonra aşağıdaki gibi bir yazı gelmeli;

Bu yazı geldi ise hemen bu linkten http://localhost:8080/ Docker’ınızın WebServer’ına giriş yapabilirsiniz. Giriş yaptığınızda da sizi karşılayacak ekran aşağıdaki gibi olacaktır.

Artık bu aşamaya geldikten sonra yapmamız gereken bir kaç işlem kaldı.

İlki; yukarıdaki ekranda Admin -> Connection adımına gitmek. Açılan ekranda airflow_db connection bilgileri aşağıdaki gibi düzenlemek.

airflow_db connection bilgileri

Yukarıdaki gibi düzenledikten sonra Data Profilling -> Ad Hoc Query sayfasına gidelim ve aşağıdaki gibi sorguyu çalıştıralım.

Bu şekilde airflow içindeki Postgresql DB’ye bağladığımıza göre Python ile kodumuzu yazmaya başlayabiliriz. Ben aşağıdaki gibi bir Python kodu yazdım;

Kısaca kodu açıklamak gerekirse;

  • Argümanları tanımladık.
  • Dag’ı tanımladık.
  • CSV dosyasını okuyup PostgresDB’ye yazacak fonksiyonu tanımladık.
  • Airflow’un ilk task’ı olarak DB’de tablo oluşturduk.
  • Airflow’un ikinci task’ı olarak Python fonksiyonunu çağırıp CSV dosyamızı DB’de bulunan tabloya insert ettik.

Şimdi sıra geldi CSV dosyamıza ben bu şekilde bir CSV dosyası oluşturdum;

Python kodumuz hazır, CSV dosyamız hazır sıra geldi Airflow’da kodumuzu çalıştırmaya.

Öncelikle indirdiğimiz repository’deki “dags” klasörüne gidip hem python dosyamızı hem de CSV dosyamızı koyalım. Ve tekrar http://localhost:8080/admin/ adresine gidelim. Aşağıda gördüğünüz gibi Python kodunda oluşturduğumuz “Dag” ekrana geldi.

Peki bu DAG’ı nasıl çalıştıracağız? Çok kolay, “OFF” yazan tuşa tıklayıp “ON” a çevirerek. :)

Sayfayı yenilediğiniz de Dag Runs bölümünde 1 yazısını yeşil halka halinde göreceksiniz. Bu Dag’ın başarılı çalıştığını gösteriyor. İçine tıklayarak da detayları görebilirsiniz.

İçine tıklayınca aşağıdaki gibi bir ekran açıldı ve burda da Run Id bölümünde bulunan scheduled ile başlayan yere tıkladık.

Ve karşınıza Python kodundaki tasklarınız geldi :)

Tamamdır artık kodumuz başarılı çalışmış, hadi bakalım verileri tabloya yazmış mı? Bunun için Data Profilling -> Ad Hoc Query ekranına gidiyoruz. Aşağıdaki gibi sorgumuzu yazıp verimizi görüyoruz :)

İşte bu kadar :)

Sorularınız olursa sormaktan çekinmeyiniz. İyi kodlamalar :)

--

--