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
Crie um arquivo
sample_operator.py
e converta-o em Pacote Privado. Consulte o guia: Criar um pacote no 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
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
Crie um repositório do GitHub contendo
sample_dag.py
na pastaDags
e seu arquivo de pacote privado. Os formatos de arquivo comuns incluemzip
,.whl
outar.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.