Airflow-DAGs

Einführung in Apache Airflow mit Python

Mike Metzger

Data Engineer

Was ist ein DAG?

DAG, oder Directed Acyclic Graph:

  • Directed: Es gibt einen gerichteten Fluss, der Abhängigkeiten abbildet.
  • Acyclic: Keine Schleifen/Zyklen/Wiederholungen.
  • Graph: Die Menge der Komponenten.
  • Verwendet in Airflow, Apache Spark, dbt

DAG

1 https://en.m.wikipedia.org/wiki/Directed_acyclic_graph
Einführung in Apache Airflow mit Python

DAG in Airflow

In Airflow gelten für DAGs:

  • Sie werden in Python geschrieben (können aber Komponenten in anderen Sprachen nutzen).
  • Sie bestehen aus Komponenten (typisch Tasks) wie Operatoren, Sensoren usw., die ausgeführt werden.
  • Sie enthalten Abhängigkeiten, explizit oder implizit definiert.
    • z. B.: Datei erst auf den Server kopieren, dann in den Datenbankdienst importieren.
Einführung in Apache Airflow mit Python

Einen DAG definieren

Beispiel-DAG:

from airflow import DAG

from datetime import datetime default_arguments = { 'owner': 'jdoe', 'email': '[email protected]', 'start_date': datetime(2020, 1, 20) }
with DAG('etl_workflow', default_args=default_arguments ) as etl_dag:
Einführung in Apache Airflow mit Python

DAG definieren (vor Airflow 2.x)

Beispiel-DAG:

from airflow import DAG

from datetime import datetime default_arguments = { 'owner': 'jdoe', 'email': '[email protected]', 'start_date': datetime(2020, 1, 20) }
etl_dag = DAG('etl_workflow', default_args=default_arguments )
Einführung in Apache Airflow mit Python

DAGs in der Kommandozeile

Mit airflow arbeiten:

  • Das CLI-Programm airflow hat viele Unterbefehle.
  • airflow -h zeigt Beschreibungen.
  • Viele betreffen DAGs.
  • airflow dags list zeigt alle erkannten DAGs.
Einführung in Apache Airflow mit Python

Kommandozeile vs. Python

Mit der Kommandozeile kannst du:

  • Airflow-Prozesse starten
  • DAGs/Tasks manuell ausführen
  • Logging-Infos von Airflow abrufen

Mit Python kannst du:

  • Einen DAG erstellen
  • Eigenschaften eines DAGs bearbeiten
Einführung in Apache Airflow mit Python

Lass uns üben!

Einführung in Apache Airflow mit Python

Preparing Video For Download...