default_args란 무엇인가?
default_args는 DAG 하위의 모든 오퍼레이터에 공통으로 적용할 파라미터를 정의하는 데 사용됩니다. 이 파라미터는 반복적으로 동일한 값을 작성해야 하는 번거로움을 줄여주고, 코드의 일관성을 유지하는 데 기여합니다.
default_args에 어떤 파라미터를 설정할 수 있을까?
default_args에 설정할 수 있는 파라미터는 Airflow의 BaseOperator 클래스 생성자에서 제공하는 파라미터들입니다.
예를 들어, 다음과 같은 파라미터들이 대표적입니다:
- start_date
- end_date
- retries
- retry_delay
- on_failure_callback
- on_success_callback
- 기타 BaseOperator에서 제공되는 다양한 파라미터들
Airflow Base operator docs
DAG 파라미터 vs BaseOperator 파라미터
Airflow에서는 DAG 파라미터와 BaseOperator 파라미터가 존재하며, 두 파라미터의 역할과 적용 수준이 다릅니다.
공통 파라미터의 충돌 예시
두 클래스에서 동일한 이름의 파라미터를 제공하는 경우가 있습니다. 예를 들어:
- on_failure_callback
- DAG 파라미터: DAG 전체 수준에서 실패 시 호출할 콜백 함수 정의
- BaseOperator 파라미터: 개별 Task 수준에서 실패 시 호출할 콜백 함수 정의
이 경우, 같은 이름의 파라미터라고 해도 적용 범위가 다르므로, 사용 목적에 맞게 설정해야 합니다.
DAG 파라미터는 default_args에 포함시키지 말아야 합니다.
우선순위: default_args vs 개별 오퍼레이터 설정
default_args를 통해 전달된 파라미터는 기본값으로 작동합니다. 하지만, 개별 오퍼레이터에 동일한 파라미터가 명시된 경우, 해당 오퍼레이터의 설정이 default_args보다 우선합니다.
예시
default_args = {
'start_date': datetime(2023, 12, 1),
'retries': 3,
}
with DAG(
'example_dag',
default_args=default_args,
schedule_interval='@daily',
) as dag:
task1 = BashOperator(
task_id='print_date',
bash_command='date',
retries=5, # default_args의 'retries'보다 우선
)
위 코드에서:
- task1의 retries는 5로 설정됩니다. 이는 default_args에 명시된 retries=3보다 우선하기 때문입니다.
정리: DAG 파라미터와 BaseOperator 파라미터의 차이
- DAG 파라미터
- DAG 단위로 적용됩니다.
- 개별 Task에는 영향을 미치지 않습니다.
- 예: schedule_interval, catchup, on_failure_callback(DAG 수준)
- default_args에 포함시키지 말아야 합니다.
- BaseOperator 파라미터
- Task 단위로 적용됩니다.
- 개별 Task마다 설정 가능하지만, 공통 적용이 필요하면 default_args로 설정할 수 있습니다.
- 예: start_date, retries, retry_delay, on_failure_callback(Task 수준)
'MLOps > Airflow' 카테고리의 다른 글
[Airflow] Dataset: DAG 간 의존성 관리 (0) | 2024.12.03 |
---|---|
[Airflow] ExternalTaskSensor: DAG 간 의존성 설정과 활용 (0) | 2024.11.24 |
[Airflow] File Sensor에 대하여 (1) | 2024.11.21 |
[Airflow] Sensor에 대해 알아보자 (0) | 2024.11.19 |
[Airflow] Provider 패키지 설치 (2) | 2024.11.17 |