Condividi tramite


Installare un pacchetto privato come requisito nel processo Apache Airflow

Nota

Il processo Apache Airflow è alimentato da Apache Airflow.

Un pacchetto Python è un modo per organizzare i moduli Python correlati in una singola gerarchia di directory. Un pacchetto viene in genere rappresentato come una directory che contiene un file speciale denominato init.py. All'interno di una directory del pacchetto è possibile avere più file di modulo Python (file .py) che definiscono funzioni, classi e variabili. Nel contesto di Apache Airflow Job, è possibile sviluppare pacchetti privati per aggiungere operatori Apache Airflow personalizzati, hook, sensori, plug-in e così via.

In questa esercitazione si creerà un semplice operatore personalizzato come pacchetto Python, lo si aggiungerà come requisito nell'ambiente del processo Apache Airflow e si importerà il pacchetto privato come modulo all'interno del file DAG.

Sviluppare un operatore personalizzato e testarlo con un DAG Apache Airflow

  1. Creare un file sample_operator.py e convertirlo in pacchetto privato. Vedere la guida: Creazione di un pacchetto 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. Creare il file DAG Apache Airflow sample_dag.py per testare l'operatore definito nel passaggio 1.

    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. Creare un repository GitHub contenente sample_dag.py nella cartella Dags e il file del pacchetto privato. I formati di file comuni includono zip, .whl o tar.gz. Posizionare il file nella cartella 'Dags' o 'Plugins' in base alle esigenze. Sincronizzare il repository Git con il processo Apache Airflow oppure è possibile usare il repositorypreconfigurato Install-Private-Package

Aggiungere il pacchetto come requisito

Aggiungere il pacchetto come requisito in Airflow requirements. Usare il formato /opt/airflow/git/<repoName>.git/<pathToPrivatePackage>

Ad esempio, se il pacchetto privato si trova in /dags/test/private.whl in un repository GitHub, aggiungere il requisito /opt/airflow/git/<repoName>.git/dags/test/private.whl all'ambiente Airflow.

Screenshot che mostra il pacchetto privato aggiunto come requisito.

Guida introduttiva: Creare un processo Apache Airflow