반응형
Apache Airflow에서 스케줄러의 시간 설정은 주로 DAG의 schedule_interval
속성을 통해 이루어지며, 이를 통해 워크플로가 언제 실행될지 제어합니다. 시간 설정에 사용되는 주요 규칙은 다음과 같습니다:
1. schedule_interval
설정 형식
schedule_interval
은 DAG 실행 주기를 정의하며, 다양한 형식을 지원합니다.
a) 크론 표현식 (Cron Expression)
* * * * *
형식의 문자열로 주기적 실행을 정의.- 각 필드는 다음과 같이 해석됩니다:
- 분 (minute): 0–59
- 시간 (hour): 0–23
- 일 (day of month): 1–31
- 월 (month): 1–12
- 요일 (day of week): 0–7 (0과 7은 일요일)
- 예:
"0 9 * * *"
: 매일 오전 9시에 실행."0 9 * * 1"
: 매주 월요일 오전 9시에 실행.
b) 간단한 문자열 간격
@
로 시작하는 예약된 간격:@once
: DAG이 한번만 실행됨.@hourly
: 매시간 실행.@daily
: 매일 자정(00:00)에 실행.@weekly
: 매주 자정(00:00)에 실행.@monthly
: 매월 1일 자정(00:00)에 실행.@yearly
또는@annually
: 매년 1월 1일 자정(00:00)에 실행.
c) timedelta
객체
- Python의
datetime.timedelta
를 사용해 실행 간격을 정의. - 예:
timedelta(days=1)
: 매일 실행.
2. DAG 실행 시간 (Execution Date)의 이해
Airflow는 백필링(Backfilling) 개념을 사용하며, DAG의 execution_date
는 실제 실행 시간이 아니라 데이터를 처리하려는 기준 시간을 나타냅니다.
- 예:
schedule_interval="0 9 * * *"
로 설정된 DAG은 2024-12-01 09:00에 실행되지만, 이 DAG의execution_date
는 2024-11-30 09:00을 기준으로 처리합니다.- 실행 시작 시간은
start_date
에 의해 영향을 받습니다.
3. Timezone 설정
Airflow는 기본적으로 UTC를 사용하며, DAG 및 스케줄 시간은 이를 기반으로 동작합니다.
- 타임존을 변경하려면:
- Airflow 설정 파일
airflow.cfg
에서default_timezone
값을 변경:
- Airflow 설정 파일
[core]
default_timezone = Asia/Seoul
- DAG 레벨에서
timezone
을 설정:
from pendulum import timezone
local_tz = timezone("Asia/Seoul")
with DAG(
dag_id="example_dag",
default_args=default_args,
schedule_interval="0 9 * * *",
start_date=datetime(2024, 1, 1, tzinfo=local_tz),
tags=["example"],
) as dag:
...
4. 스케줄 실행 시 주의사항
start_date
와schedule_interval
에 따라 DAG이 실행되는 시간에 차이가 있을 수 있으니 설정 시 주의해야 합니다.catchup
옵션:- 기본값은
True
이며,start_date
이후 실행되지 않은 간격을 모두 실행. - 이를 방지하려면:
- 기본값은
catchup=False
요약
Airflow 스케줄 시간 설정은 크론 표현식, 예약된 문자열 간격, 또는 timedelta
를 활용할 수 있습니다. 시간대를 고려하여 정확한 스케줄 설정과 실행 시간의 개념을 이해하면 효율적인 DAG 관리를 할 수 있습니다.
반응형
'Data Mining & Distributed > Airflow' 카테고리의 다른 글
[ Airflow ] db init - PostgreSQL 과 함께 초기 설정하기 (0) | 2024.12.02 |
---|---|
[ Airflow ] schedule - 일정 주기로 dag 실행하기 (0) | 2024.12.02 |
[ Airflow ] Celery, Dask, Kubernetes, Ray - Executor 비교 설명하기 (0) | 2024.11.18 |
[ Airflow ] 버전별 특징 알아보기 (1) | 2024.11.16 |
[ Airflow ] Celery, Ray - 비교 설명하기 (0) | 2024.11.16 |