Instalar um pacote privado como requisito em fluxos de trabalho de dados

Observação

Os fluxos de trabalho de dados são da plataforma Apache Airflow.
O Apache Airflow é uma plataforma de software livre usada para criar, agendar e monitorar fluxos de trabalho de dados complexos de forma programática. Ele permite que você defina um conjunto de tarefas, chamadas de operadores, que podem ser combinadas em DAGs (grafos direcionados acíclico) para representar pipelines de dados.

Um pacote Python é uma maneira de organizar módulos do Python relacionados em uma única hierarquia de diretório. Um pacote normalmente é representado como um diretório que contém um arquivo especial chamado init.py. Em um diretório de pacote, você pode ter vários arquivos de módulo Python (arquivos .py) que definem funções, classes e variáveis. No contexto dos fluxos de trabalho de dados, você pode criar pacotes para adicionar seu código customizado.

Esse guia fornece instruções passo a passo sobre a instalação do arquivo .whl (Wheel), que serve como formato de distribuição binária para o pacote Python nos fluxos de trabalho de dados.

Para fins ilustrativos, crio um operador personalizado simples como pacote python que pode ser importado como um módulo dentro do arquivo dag.

Desenvolver um operador personalizado e testar com um Dag do Apache Airflow

  1. Crie um arquivo sample_operator.py e converta-o em Pacote Privado. Consulte o guia: Criar um pacote no 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. Crie um arquivo DAG do Apache Airflow sample_dag.py para testar o operador definido na Etapa 1.

    from datetime import datetime
    from airflow import DAG
    
    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. Crie um repositório do GitHub contendo sample_dag.py na pasta Dags e seu arquivo de pacote privado. Os formatos de arquivo comuns incluem zip, .whlou tar.gz. Coloque o arquivo na pasta 'Dags' ou 'Plug-ins', conforme apropriado. Sincronize seu repositório Git com os fluxos de trabalho de dados ou você pode usar o repositório pré-configurado (Install-Private-Package)[https://github.com/ambika-garg/Install-Private-Package-Fabric]

Adicionar seu pacote como requisito

Adicione o pacote como um requisito em Airflow requirements. Use o formato: /opt/airflow/git/<repoName>.git/<pathToPrivatePackage>

Por exemplo, se o seu pacote privado está localizado em /dags/test/private.whl em um repositório do GitHub, adicione a exigência /opt/airflow/git/<repoName>.git/dags/test/private.whl no ambiente do Airflow.

Captura de tela mostrando o pacote privado adicionado como requisito.

Guia de início rápido: Criar um fluxo de trabalho de dados