Airflow
Airflow - MySQL 테이블 복사하기 (3) Backfill 실행해보기
터칭 데이터
2023. 12. 15. 23:18
Backfill을 커맨드라인에서 실행하는 방법
airflow dags backfill dag_id -s 2018- 07- 01 -e 2018- 08- 01
This assumes the followings:
○ catchUp이 True로 설정되어 있음
○ execution_date을 사용해서 Incremental update가 구현되어 있음
start_date부터 시작하지만 end_date은 포함하지 않음
파이썬 arr=[0, 1, 2, 3, 4, 5, 6, 7]에서 arr[:5]=[0, 1, 2, 3, 4]인 것과 같은 개념
실행순서는 날짜/시간순은 아니고 랜덤. 만일 날짜순으로 하고 싶다면
DAG default_args의 depends_on_past를 True로 설정
default_args = {
'depends_on_past': True,
How to Make Your DAG Backfill ready (1)
먼저 모든 DAG가 backfill을 필요로 하지는 않음
Full Refresh를 한다면 backfill은 의미가 없음
여기서 backfill은 일별 혹은 시간별로 업데이트하는 경우를 의미함
마지막 업데이트 시간 기준 backfill을 하는 경우라면 (Data Warehouse 테이블에 기록된 시간 기준) 이런 경우에도 execution_date을 이용한 backfill은 필요하지 않음
데이터의 크기가 굉장히 커지면 backfill 기능을 구현해 두는 것이 필수
airflow가 큰 도움이 됨
하지만 데이터 소스의 도움 없이는 불가능
How to Make Your DAG Backfill ready (2)
어떻게 backfill로 구현할 것인가
제일 중요한 것은 데이터 소스가 backfill 방식을 지원해야함
“execution_date”을 사용해서 업데이트할 데이터 결정
“catchup” 필드를 True로 설정 (그래야 다음과 같은 커맨드 라인이 동작)
airflow dags backfill dag_id -s 2018- 07- 01 -e 2018- 08- 01
start_date/end_date을 backfill하려는 날짜로 설정
다음으로 중요한 것은 DAG 구현이 execution_date을 고려해야 하는 것이고 멱등성 보장(idempotent) 해야함