start_date , schedule_interval, execution_date 개념(Backfill, Catch up)

우상욱·2024년 3월 10일
0

Airflow

목록 보기
16/22

개념


에어플로우에서 Start_date와 Schedule_interval은 처음에는 이 파라미터가 혼란스러울 수 있습니다. 중요한 개념인 3개를 구분하면 됩니다. start_date, schedule_interval, execution_date

  • start_date : 스케줄러에 의해 DAG가 예약되기 시작하는 날짜
    만약 2019년 3월 30일로 정의한다면, 2019년 3월 30일 자정부터 예약

  • schedule_interval : DAG를 트리거하려는start_date로부터의 시간 간격
    start_date는 DAG가 예약된 처음의 시간
    그 이후의 간격을 정하는 파라미터가 schedule_interavl

최선의 방법은 DAG 레벨에서 모든 작업에 대해 동일한 start_date를 적용하는 것입니다.
task 수준에서 start_date를 정의할 수 있지만, 절대로 권장하지 않습니다.

  • execution_date : DAG가 실행된 시간의 전 단위
    • 만약 schedule_interval이 하루이고, Dag가 Run된 시간이 2024년 3월 2일이라면, execution_date은 2024년 3월 1일입니다.
    • 즉 DAG가 실행된 날짜와, execution_date은 다릅니다. 이 execution_date은 데이터를 처리할 기간의 시작점이라고 보면 좋습니다. 예를 들어서 2024년 3월 2일 자정에 데이터를 처리하는 TASK가 있다면, 해당 TASK는 2024년 3월 1일의 데이터를 처리해야합니다. 이렇게 보면 execution_date은 처리할 데이터의 시작점인 2024년 3월 1일로 설정되어 데이터를 처리합니다.

catchup 파라미터


DAG는 어떤 이유에서든지, 실패할 수 있습니다. 이 때 Catchup 파라미터는 실패된 DAG를 캐치해서 백필할 수 있게 해줍니다.

2022년 1월 2일을 execution_date으로 가지는 DAG, 1월 3일인 DAG, 1월 4일인 DAG가 연달아 실패하고, DAG의 오류를 수정하고 DAG 실행 시간 기준으로, 1월 6일에 다시 스케줄링이 됐다면, Catchup 파라미터가 적용되어있을 경우, execution_date을 1월 2일, 1월 3일, 1월 4일의 DAG를 다시 실행합니다.

  • 이 때, start_date은 1월 6일이며
  • execution-date은 각각 오류가 난 시점의 execution_date 값을 가집니다.

이 파라미터를 적용하는 방법은 두 가지가 있습니다.

  • DAG의 정의에 catchup 파라미터를 True 혹은 False로 설정합니다.
    catchup이 True일 경우, 오류가 있던 Dag가 다시 스케줄대로 도는 경우, 이전 에러가 났던 모든 DAG 날짜에 대해서 실행시킵니다.

  • airflow.cfg 파일에서 catchup_by_defaultTrue 혹은 False로 지정합니다.
    default 값은 True입니다.

크론 탭 관련 도구

profile
데이터엔지니어

0개의 댓글