Airflow-DAG's

Introductie tot Apache Airflow in Python

Mike Metzger

Data Engineer

Wat is een DAG?

DAG, ofwel Directed Acyclic Graph:

  • Directed: er is een richting/flow die afhankelijkheden weergeeft.
  • Acyclic: geen lus/cyclus/herhaling.
  • Graph: de set componenten.
  • Gebruikt in Airflow, Apache Spark, dbt

DAG

1 https://en.m.wikipedia.org/wiki/Directed_acyclic_graph
Introductie tot Apache Airflow in Python

DAG in Airflow

Binnen Airflow gelden voor DAG's:

  • Geschreven in Python (maar kunnen componenten in andere talen gebruiken).
  • Bestaan uit componenten (meestal taken) zoals operators, sensors, enz.
  • Bevatten afhankelijkheden, expliciet of impliciet.
    • Bijv.: kopieer het bestand naar de server vóór import in de databaseservice.
Introductie tot Apache Airflow in Python

Een DAG definiëren

Voorbeeld-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:
Introductie tot Apache Airflow in Python

Een DAG definiëren (voor Airflow 2.x)

Voorbeeld-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 )
Introductie tot Apache Airflow in Python

DAG's in de commandoregel

Met airflow:

  • Het airflow-CLI heeft veel subcommando's.
  • airflow -h voor beschrijvingen.
  • Veel gaan over DAG's.
  • airflow dags list toont alle herkende DAG's.
Introductie tot Apache Airflow in Python

Commandoregel vs. Python

Gebruik de commandoregel om:

  • Airflow-processen te starten
  • DAG's / taken handmatig uit te voeren
  • Loginfo uit Airflow op te halen

Gebruik Python om:

  • Een DAG te maken
  • Eigenschappen van een DAG te bewerken
Introductie tot Apache Airflow in Python

Laten we oefenen!

Introductie tot Apache Airflow in Python

Preparing Video For Download...