Backfill?
- 실패한 데이터 파이프라인을 재실행 or 읽어온 데이터의 문제로 다시 읽어와야하는 경우를 의미
- Airflow에서의 Backfill
- 과거 특정 날짜에 대한 DAG 실행을 수동으로 수행하여 데이터 파이프라인을 다시 실행하는 과정
- 새로운 DAG를 추가하거나, DAG의 설정을 변경한 후, 누락된 과거 데이터를 처리하기 위해 사용
Backfill의 주요 목적
- 데이터 누락 방지 : 과거 DAG가 실행되지 않아서 누락된 데이터를 채우는 데 사용
- 데이터 갱신 : 과거 DAG에 에러가 발생한 경우, 과거 데이터를 갱신하기 위해 사용
- 데이터 재처리 : 데이터 처리 로직이 변경된 후 과거 데이터를 새 로직에 맞게 재처리하기 위해 사용
Backfill 관련 Airflow 변수
- start_date
- DAG가 처음 실행되는 날짜가 아닌, DAG가 처음 읽어와야하는 데이터의 날짜 / 시간
- 실제 첫 실행 날짜는 start_date + DAG의 실행주기
- catchup
- DAG가 처음 활성화 된 시점이 start_date보다 미래일 경우, 그 사이에 실행되지 않은 작업의 실행 여부를 결정하는 파라미터
- True가 Default -> Backfill 실행
- False일 경우 -> Backfill 미실행 및 실행되지 않은 작업 무시
- end_date : 보통 필요하지 않지만, Backfill을 날짜 범위를 지정하여 하는 경우에 필요
- execution_date : DAG가 읽어와야하는 데이터의 날짜 / 시간
Backfill 실행 방법
- [airflow dags backfill] 명령을 통해 특정 날짜 범위의 과거 실행을 수동으로 트리거 가능
필수 조건
- 데이터 소스의 backfill 방식 지원 필수
- catchup - True로 설정
- execution_date를 통해 Incremental update의 구현 O
예시
- -s : 시작 날짜
- -e : 종료 날짜
- <dag_id> : backfill을 실행할 DAG의 ID
% airflow dags backfill -s 2024-11-01 -e 2024-11-07 <dag_id>
Backfill 주의사항
- 중복 처리 주의 : 이미 처리된 데이터가 있는 경우, 재실행 시 중복될 수 있으므로 DAG의 Task에 중복 방지 로직을 추가 고려 필요
- 리소스 부담 : 과거 데이터 양이 많을 경우 backfill 작업에 리소스를 많이 소모할 수 있기에, 리소스 유의 필요
'데이터 > Airflow' 카테고리의 다른 글
[Airflow] 7. DAG Trigger? (0) | 2024.11.19 |
---|---|
[Airflow] 6. Slack Alert (0) | 2024.11.18 |
[Airflow] 4. Airflow.cfg? (0) | 2024.11.11 |
[Airflow] 3. Python Operator / Task Decorator (0) | 2024.11.10 |
[Airflow] 2. XCom? (1) | 2024.11.10 |