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
Creare un file
sample_operator.py
e convertirlo in pacchetto privato. Vedere la guida: Creazione di un pacchetto in Pythonfrom 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
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
Creare un repository GitHub contenente
sample_dag.py
nella cartellaDags
e il file del pacchetto privato. I formati di file comuni includonozip
,.whl
otar.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.