Airflow operatörleri

Python ile Apache Airflow’a Giriş

Mike Metzger

Data Engineer

Operatörler

  • İş akışında tek bir görevi temsil eder
  • Bağımsız çalışır (genellikle)
  • Genelde bilgi paylaşmaz
  • Farklı görevler için çeşitli operatörler vardır
@dag(
  dag_id="Example_Dag"
)
def example_dag():
  @task
  def task1():
    return "The result from task1"

  task1()

example_dag()
Python ile Apache Airflow’a Giriş

@task (PythonOperator)

  • Bir Python fonksiyonunu yürütür
  • Herhangi bir Python fonksiyonu @task ile dekore edilebilir
  • Diğer fonksiyonlar/görevlerle veri aktarabilir
from airflow.sdk import task

@task def printme(): print("This goes in the logs!")
printme()
Python ile Apache Airflow’a Giriş

@task argümanları

  • Bir göreve/fonksiyona, normal bir Python fonksiyonu gibi argüman geçirebilirsiniz
@task
def printme(name: str):
    print(f"Hi {name} - This goes in the logs!")

printme(name='DataCamp')
# Şunları ekler: # Hi DataCamp - This goes in the logs! # Airflow günlüklerine
Python ile Apache Airflow’a Giriş

@task.bash (BashOperator)

@task.bash
def bash_example():
  return "echo 'Example!'"

bash_example()
@task.bash
def run_cleanup():
  return "runcleanup.sh"

run_cleanup()
  • Verilen bir Bash komutunu veya betiğini çalıştırır
  • Komutu geçici bir dizinde yürütür
  • Komut için ortam değişkenleri belirtilebilir
Python ile Apache Airflow’a Giriş

Görev bağımlılıkları

  • Her DAG tamamlanacak bir görev kümesine sahiptir
  • Görev bağımlılıkları çalışma sırasını belirtir
  • Bağımlılık belirtmek için farklı yöntemler vardır

 

Bağımlılık sırasını gösteren bağlı görevlerden oluşan Airflow DAG

Python ile Apache Airflow’a Giriş

Bitshift söz dizimi

>> ve <<

task1() >> task2()

# task2 başlamadan önce task1 tamamlanır
task1() >> task2() >> task3()
# task2 başlamadan önce task1, task3 başlamadan önce task2 tamamlanır
task1() >> task3() task2() >> task3()
# task1 ve task2 birlikte çalışabilir ancak her ikisi de bitmeden task3 çalışmaz
Python ile Apache Airflow’a Giriş

Bitshift söz dizimi örneği

# Mutabakat öncesi satış verilerini indir
download_sales_data() >> reconcile()

# Mutabakat öncesi envanter verilerini indir
download_inventory_data() >> reconcile()

 

  • Her ikisi de mutabakattan önce tamamlanmalıdır; sıraya gerek yoktur
Python ile Apache Airflow’a Giriş

Hadi pratik yapalım!

Python ile Apache Airflow’a Giriş

Preparing Video For Download...