Installieren eines Private Package als Anforderung im Apache Airflow-Auftrag

Hinweis

Apache Airflow-Arbeiten in Fabric werden durch Apache Airflow betrieben.

Derzeit werden private und virtuelle Netzwerke für Apache Airflow-Jobs nicht unterstützt.

Mit einem Python-Paket können Sie verwandte Python-Module in einer einzelnen Verzeichnishierarchie organisieren. Ein Paket wird in der Regel als Verzeichnis dargestellt, das eine spezielle Datei namens init.py enthält. Innerhalb eines Paketverzeichnisses können mehrere Python-Moduldateien (PY-Dateien), die Funktionen, Klassen und Variablen definieren, vorhanden sein. Mit Apache Airflow Jobs können Sie Eigene private Pakete entwickeln, um benutzerdefinierte Apache Airflow-Operatoren, Hooks, Sensoren, Plug-Ins und vieles mehr hinzuzufügen.

In diesem Lernprogramm erstellen Sie einen einfachen benutzerdefinierten Operator als Python-Paket, fügen es als Anforderung in Ihrem Apache Airflow-Auftrag hinzu und importieren Ihr privates Paket als Modul in Ihrer DAG-Datei.

Entwickeln eines benutzerdefinierten Operators und Testen mit einem Apache Airflow Dag

  1. Erstellen Sie eine Datei mit dem Namen sample_operator.py und wandeln Sie sie in ein privates Paket um. Wenn Sie Hilfe benötigen, lesen Sie dieses Handbuch: Erstellen eines Pakets in Python

    from airflow.models.baseoperator import BaseOperator
    
    
    class SampleOperator(BaseOperator):
        def __init__(self, name: str, **kwargs) -> None:
            super().__init__(**kwargs)
            self.name = name
    
        def execute(self, context):
            message = f"Hello {self.name}"
            return message
    
    
  2. Erstellen Sie als Nächstes eine Apache Airflow DAG-Datei mit dem Namen sample_dag.py, um den Operator zu testen, den Sie im ersten Schritt erstellt haben.

    from datetime import datetime
    from airflow import DAG
    
     # Import from private package
    from airflow_operator.sample_operator import SampleOperator
    
    
    with DAG(
    "test-custom-package",
    tags=["example"]
    description="A simple tutorial DAG",
    schedule_interval=None,
    start_date=datetime(2021, 1, 1),
    ) as dag:
        task = SampleOperator(task_id="sample-task", name="foo_bar")
    
        task
    
  3. Richten Sie ein GitHub Repository mit Ihrer sample_dag.py Datei im dags Ordner ein. Fügen Sie dann Ihre private Paketdatei in plugins. Sie können Formate wie zip, .whl oder tar.gz verwenden. Verbinden Sie Ihr Git-Repository mit Ihrem Apache Airflow-Auftrag, oder probieren Sie das vorgefertigte Beispiel bei Install-Private-Package aus.

Hinzufügen Ihres Pakets als Anforderung

Fügen Sie das Paket unter Airflow requirements im Format /opt/airflow/git/<repoName>/<pathToPrivatePackage> hinzu

Wenn sich Ihr privates /dags/test/private.whl Paket beispielsweise in Ihrem GitHub-Repository befindet, fügen Sie einfach /opt/airflow/git/<repoName>/dags/test/private.whl Ihrer Airflow-Umgebung hinzu.

Screenshot mit dem privaten Paket, das als Anforderung hinzugefügt wurde.

Hinweis

Achten Sie darauf, den plugins Ordner und nicht den dags Ordner zum Hosten Ihrer eigenen Pakete zu verwenden.

Installieren einer privaten Bibliothek aus dem Ordner "plugins/libs"

Wenn Sie kein verbundenes Git-Repository verwenden, können Sie eine Raddatei direkt in den Ordner Ihres Apache Airflow-Auftrags plugins/libs hochladen und als Anforderung darauf verweisen. Für diesen Ansatz ist kein externes Repository erforderlich.

  1. Laden Sie Ihre .whl Datei in den plugins/libs Ordner im Dateispeicher Ihres Apache Airflow-Auftrags hoch.

  2. Fügen Sie die Raddatei als Voraussetzung hinzu, indem Sie das relative Pfadformat /opt/airflow/plugins/libs/<your-wheel-file>.whlverwenden.

    Beispiel:

    opt/airflow/plugins/libs/apache_airflow_providers_microsoft_fabric-0.1.0-py3-none-any.whl
    
  3. Starten Sie Ihren Apache Airflow-Auftrag neu, damit die Anforderung wirksam wird.

Schnellstart: Erstellen eines Apache Airflow-Auftrags