다음을 통해 공유


Apache Airflow 작업의 요구 사항으로 프라이빗 패키지 설치

참고 항목

Apache Airflow 작업은 Apache Airflow에서 구동됩니다.

Python 패키지는 관련 Python 모듈을 단일 디렉터리 계층 구조로 구성하는 방법입니다. 패키지는 일반적으로 init.py라는 특수 파일을 포함하는 디렉터리로 표시됩니다. 패키지 디렉터리 내에는 함수, 클래스 및 변수를 정의하는 여러 Python 모듈 파일(.py 파일)이 있을 수 있습니다. Apache Airflow 작업의 컨텍스트에서 사용자 지정 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. 1단계에서 정의한 연산자를 테스트하기 위해 Apache Airflow DAG 파일 sample_dag.py을 생성합니다.

    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. Dags 폴더에 sample_dag.py와 비공개 패키지 파일이 포함된 GitHub 리포지토리를 만듭니다. 일반적인 파일 형식에는 zip, .whl 또는 tar.gz가 포함됩니다. 적절하게 'Dags' 또는 'Plugins' 폴더 내에 파일을 배치합니다. Git 리포지토리를 Apache Airflow 작업과 동기화하거나 미리 구성된 리포지토리 Install-Private-Package를 사용할 수 있습니다.

요구 사항으로 패키지를 추가합니다.

Airflow requirements에서 패키지를 요구 사항으로 추가합니다. /opt/airflow/git/<repoName>.git/<pathToPrivatePackage> 형식을 사용합니다.

예를 들어 비공개 패키지가 GitHub 리포지토리의 /dags/test/private.whl에 있는 경우 Airflow 환경에 요구 사항 /opt/airflow/git/<repoName>.git/dags/test/private.whl를 추가합니다.

요구 사항으로 추가된 프라이빗 패키지를 보여 주는 스크린샷

빠른 시작: Apache Airflow 작업 만들기