Установка частного пакета в качестве требования в задании Apache Airflow

Примечание.

Задание Apache Airflow работает под управлением Apache Airflow.

В настоящее время частные сети и виртуальные сети не поддерживаются заданиями Apache Airflow Fabric.

Пакет Python позволяет упорядочивать связанные модули Python в одну иерархию каталогов. Пакет обычно представляется в виде каталога, содержащего специальный файл с именем init.py. В каталоге пакетов можно использовать несколько файлов модуля Python (.py файлов), определяющих функции, классы и переменные. С помощью заданий Apache Airflow вы можете разрабатывать собственные приватные пакеты для добавления пользовательских операторов, хуков, датчиков, подключаемых модулей и т. д.

В этом руководстве вы создадите простой пользовательский оператор в виде пакета Python, добавьте его в качестве требования в задание Apache Airflow и импортируйте частный пакет в виде модуля в DAG-файл.

Разработка пользовательского оператора и тестирование с помощью Apache Airflow Dag

  1. Создайте файл sample_operator.py, названный так, и сделайте его частным пакетом. Если вам нужна помощь, ознакомьтесь с этим руководством. Создание пакета в 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. Затем создайте файл sample_dag.py DAG Apache Airflow, чтобы протестировать оператор, сделанный на первом шаге.

    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. Настройте репозиторий GitHub с sample_dag.py файлом в папкеdags. Затем поместите файл своего частного пакета в plugins. Вы можете использовать такие форматы, как zip, .whlили tar.gz. Подключите репозиторий Git к заданию Apache Airflow или попробуйте готовый пример в Install-Private-Package.

Добавьте свой пакет в качестве требования

Добавьте пакет в Airflow requirements, используя формат /opt/airflow/git/<repoName>/<pathToPrivatePackage>

Например, если ваш частный пакет находится /dags/test/private.whl в репозитории GitHub, просто добавьте /opt/airflow/git/<repoName>/dags/test/private.whl в среду Airflow.

Снимок экрана: частный пакет, добавленный в качестве требования.

Примечание.

Не забудьте использовать папку plugins , а не папку dags для размещения собственных пакетов.

Установка частной библиотеки из папки plugins/libs

Если вы не используете подключенный репозиторий Git, вы можете отправить файл колеса непосредственно в папку задания plugins/libs Apache Airflow и ссылаться на него в качестве требования. Этот подход не требует внешнего репозитория.

  1. Загрузите ваш файл .whl в папку plugins/libs в хранилище файлов задания Apache Airflow.

  2. Добавьте файл колесика в качестве требования, используя относительный формат plugins/libs/<your-wheel-file>.whlпути.

    Рассмотрим пример.

    plugins/libs/apache_airflow_providers_microsoft_fabric-0.1.0-py3-none-any.whl
    
  3. Перезапустите задание Apache Airflow, чтобы требование вступило в силу.

Краткое руководство: Создание задания Apache Airflow