Apache Airflow Parameter: Optimieren Sie Ihre Data Pipeline

Robin Brandt

Geschrieben von: Robin Brandt - 18 April 2024

In der modernen Unternehmenslandschaft der datengesteuerten Entscheidungsfindung sind Faktoren, die Ihnen helfen, eine robuste und anpassungsfähige Infrastruktur für Ihre Datenverarbeitung aufzubauen, von entscheidender Bedeutung. Apache Airflow ist ein leistungsstarkes Tool für die Verwaltung komplexer Daten-Workflows, das für jedes Unternehmen, das die Leistungsfähigkeit seiner Daten effektiv nutzen möchte, von entscheidender Bedeutung ist.

Die zentralen Strukturelemente von Apache Airflow sind direktionale azyklische Graphen (DAGs). Diese DAGs dienen als Gerüst, innerhalb dessen Tasks definiert, organisiert und ausgeführt werden. Jeder DAG stellt eine Sammlung von Tasks dar, wobei jeder Task eine Arbeitseinheit ist und die Beziehungen zwischen diesen Tasks durch ihre Abhängigkeiten und die Reihenfolge ihrer Ausführung definiert sind. Diese Struktur stellt sicher, dass die Tasks so ausgeführt werden, dass ihre gegenseitigen Abhängigkeiten beachtet werden, ohne dass zirkuläre Abhängigkeiten entstehen, die zu Ausführungsfehlern oder Endlosschleifen führen könnten. Airflow garantiert, dass die Ausführung aller Zwischenschritte der Datenverarbeitung dokumentiert wird und Fehler, sollten diese auftreten, automatisch behandelt oder zur weiteren Überprüfung leicht identifiziert werden können.

Die Natur dieses Frameworks und seine Anwendung durch Python-Code ermöglicht an sich schon eine große Flexibilität, was ein wesentlicher Vorteil von Airflow im Vergleich zu vielen Low-Code/No-Code-Orchestrierungsplattformen ist. Diese Anpassungsfähigkeit kann durch die Verwendung von Parametern, sowohl auf DAG- als auch auf Task-Ebene, zusätzlich genutzt werden, was das heutige Thema sein wird.

Kurz gesagt, Airflow-Parameter ermöglichen es uns, Laufzeitkonfigurationen für die Tasks, die wir ausführen, bereitzustellen, entweder über die grafische Benutzeroberfläche (GUI) von Airflow oder durch Hinzufügen dieser Parameter zu unseren CLI-Aufrufen.

Parameter auf DAG-Ebene

Wir können einem DAG Parameter hinzufügen, indem wir den DAG mit dem Schlüsselwort "params" initialisieren. Die Werte selbst werden in Form eines Python-Dictionary-Objekts gesetzt, das die Namen und entweder einen Standardwert oder ein Objekt der Klasse Param enthält. Letzteres hat den Vorteil, dass wir den Datentyp des Parameterwerts angeben und einige zusätzliche Attribute setzen können, um zu definieren, wie die Benutzer mit ihm interagieren. So können wir beispielsweise eine zusätzliche Beschreibung, Ober- oder Untergrenzen für numerische Werte, Mindest- oder Höchstlängen für String-Werte oder ein Enum mit den zulässigen Werten festlegen.

Die Param-Definition verwendet das [JSON-Schema](https://json-schema.org/draft/2020-12/json-schema-validation), was bedeutet, dass wir zum Beispiel alle Validierungsschlüsselwörter verwenden können.

image_01_Data_Pipeline

DAG initialization with configured parameters

Parameter auf Task-Ebene

Es ist auch möglich, einzelnen Tasks Parameter hinzuzufügen. Die hier eingestellten Werte haben eine höhere Priorität als die Standardparameterwerte auf DAG-Ebene, aber eine niedrigere Priorität als vom Benutzer eingestellte Parameter, die beim Auslösen der DAG festgelegt werden.

image_02_Data_Pipeline

Order of precedence of parameters set at different levels


Optimieren Sie Ihr Workflowmanagement
mit Apache Airflow!

NextLyitcs Whitepaper Apache Airflow DE


Mit Parametern arbeiten

Es gibt mehrere Möglichkeiten, auf diese Parameter zuzugreifen. Am einfachsten ist es, das Schlüsselwortargument "context" oder "kwargs" in den Task zu inkludieren , zu entpacken und dann auf diese Weise auf die Parameterwerte zuzugreifen.

image_03_Data_Pipeline

image_04_Data_Pipeline Accessing params via context injection 

Eine andere Option ist die Verwendung der Parameter als Jinja-Template, unter Verwendung der Syntax für [templated Strings](https://airflow.apache.org/docs/apache-airflow/stable/templates-ref.html#templates-ref)

image_05_Data_Pipeline

Das Trigger UI-Formular

Das in Airflow Version 2.6.0 eingeführte Trigger UI Formular ermöglicht es uns, die Laufzeitargumente über eine kompakte Web-Oberfläche anzupassen, wenn wir einen DAG manuell ausführen, indem wir auf die Schaltfläche "Trigger DAG w/ config" (vor Version 2.9.0) bzw. auf die Schaltfläche "Trigger DAG" (Version 2.9.0) klicken. Diese Funktion liest die vorkonfigurierten Parameter auf DAG-Ebene ein und liefert uns Eingabemasken für die jeweiligen Felder. Diese Felder berücksichtigen bereits den Datentyp der jeweiligen Parameter, was ihre Verwendung komfortabler und weniger fehleranfällig macht. Damit diese Schaltfläche auch dann erscheint, wenn für die jeweilige DAG keine Parameter konfiguriert sind, muss die Umgebungsvariable "AIRFLOW__WEBSERVER__SHOW_TRIGGER_FORM_IF_NO_PARAMS" auf "True" gesetzt werden.

image_06_Data_Pipeline

Airflow Trigger UI Form 

 

Vorteile der Parametrisierung von DAG-Läufen

Nachdem wir nun untersucht haben, wie wir unsere DAGs so konfigurieren können, dass sie Airflow-Parameter einbeziehen, werden Sie sich vielleicht fragen, wofür diese Funktionalität in der Praxis eingesetzt werden könnte.

Ein möglicher Anwendungsfall könnte sein, wenn Sie DAG Daten innerhalb eines bestimmten Zeitfensters verarbeiten, das Sie mit mithilfe dieser Parameter konfigurieren können, indem Sie dynamisch ein Start-/Enddatum festlegen, anstatt sich auf die standardmäßigen Einstellungen zu verlassen, die Sie möglicherweise für die zeitgesteuerten DAG-Läufe konfiguriert haben.

Ein anderes Beispiel wäre die Erstellung eines DAG für administrative Tasks innerhalb Ihres IT-Ökosystems, wie die Erstellung von Benutzern und die Zuweisung von Berechtigungen für bestimmte Anwendungen. Die Anwendung dieser Parameter ermöglicht es Ihnen, die Benutzerdetails, wie z. B. den Benutzernamen oder die Rolle auf dem Zielsystem, manuell als Parameter festzulegen und dann den DAG auszuführen, um diese Konfiguration zu übernehmen. Dies sind nur einige Beispiele, die die Möglichkeiten der Parametrisierung bei der Entwicklung Ihrer Data Pipelines nur anreißen.

Optimierung Ihrer Data Pipeline - Unser Fazit

In der sich ständig wandelnden Welt der geschäftlichen Datenverarbeitung hat Apache Airflow bewiesen, dass es der Herausforderung einer kontinuierlichen Weiterentwicklung gewachsen ist, um die Bedürfnisse seiner Nutzer zu erfüllen. Das Thema der Parametrisierung von DAGs ist nur eine der vielen Facetten, die es Ihnen ermöglichen, die Plattform an Ihre spezifischen Bedürfnisse anzupassen.

Wenn Sie neugierig sind, wie Sie Airflow an Ihre geschäftlichen Anforderungen anpassen können, oder wenn Sie mehr über unsere anderen Spezialgebiete erfahren möchten, können Sie uns jederzeit kontaktieren!

Erfahren Sie mehr über Apache Airflow

Themen: Machine Learning, Apache Airflow

Beitrag teilen

Sie haben eine Frage zum Blog?
Fragen Sie Robin Brandt