Установка частного пакета в качестве требования в задании Apache Airflow
Примечание.
Задание Apache Airflow работает под управлением Apache Airflow.
Пакет Python — это способ упорядочить связанные модули Python в одну иерархию каталогов. Пакет обычно представляется в виде каталога, содержащего специальный файл с именем init.py. В каталоге пакетов можно использовать несколько файлов модуля Python (.py файлов), определяющих функции, классы и переменные. В контексте задания Apache Airflow можно разработать частные пакеты для добавления пользовательских операторов Apache Airflow, перехватчиков, датчиков, подключаемых модулей и т. д.
В этом руководстве вы создадите простой пользовательский оператор в виде пакета Python, добавьте его в качестве требования в среде задания Apache Airflow и импортирует частный пакет в виде модуля в файле DAG.
Разработка пользовательского оператора и тестирование с помощью Apache Airflow Dag
Создайте файл
sample_operator.py
и преобразуйте его в закрытый пакет. См. руководство. Создание пакета в 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
Создайте файл
sample_dag.py
DAG Apache Airflow для тестирования оператора, определенного на шаге 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
Создайте репозиторий GitHub, содержащий папку
sample_dag.py
иDags
файл закрытого пакета. Распространенные форматы файлов включаютzip
,.whl
илиtar.gz
. Поместите файл в папку "Dags" или "Подключаемые модули" в соответствии с соответствующими параметрами. Синхронизация репозитория Git с заданием Apache Airflow или с помощью предварительно настроенного репозиторияInstall-Private-Package
Добавление пакета в качестве требования
Добавьте пакет в качестве требования.Airflow requirements
Использование формата /opt/airflow/git/<repoName>.git/<pathToPrivatePackage>
Например, если частный пакет находится /dags/test/private.whl
в репозитории GitHub, добавьте требование /opt/airflow/git/<repoName>.git/dags/test/private.whl
в среду Airflow.