schedule_interval 개념과 사용법schedule_interval은 Airflow의 DAG 실행 주기를 설정하는 파라미터이다. 이 설정을 통해 DAG 실행을 자동화하여 특정 시각에 정해진 작업을 수행한다. 이 글에서는 schedule_interval의 개념과 사용법을 소개한다. 만약 Scheduling을 진행할 때 Airflow의 시간 개념 (Interval Start, Interval End, Logical Date)에 대해 알지 못한다면, 아래의 글을 참고하면 된다. [Airflow] DAG Scheduling과 ExecutionAirflow Scheduling과 Execution개요Airflow 관리Airflow를 사용하면서 반드시 알아야 할 것이 "작성한 DAG가 언제, 얼마나 실행되는..
DAG Trigger 시 DAG Run이 동시에 두 개가 생성되는 문제새로운 DAG를 생성한 뒤 처음으로 Trigger 하거나, DAG의 실행을 중단한 뒤 나중에 다시 Trigger 하는 경우 DAG Run이 두 개가 동시에 생성되는 상황이 발생한다. catchup을 False로 설정해 Backfill이 없는데도 말이다. 여기서 Backfill은 DAG의 start_date부터 현재까지 중간에 없는 DAG Run을 생성하는 기능이다.현재 작성 중인 DAG는 API로부터 데이터를 추출하고 S3에 parquet으로 저장한 뒤 Redshfit에 COPY 하는 ETL 과정을 담고 있는데, 동시에 실행될 경우 Redshift 동시 접근으로 인한 에러가 발생하는 경우가 존재한다. 또한 S3의 File Partiti..
DAG를 작성하는 세 가지 방법Airflow에서 실행시키기 위한 DAG를 작성하는 방법은 세 가지가 존재한다. 세 가지 방식의 차이점과 DAG 선언 방식에 따른 장점과 단점을 알아보려 한다. 공식 문서를 참고하여 작성하였다.Airflow DAGs 공식 문서표준 생성자 (constructor) 사용설명DAG 객체를 명시적으로 생성하고, 각 Operator (Task)를 DAG에 추가하는 방식DAG 생성자는 파라미터를 통해 dag_id, start_date, schedule, default_arg 등을 설정장단점장점명시적이기 때문에 코드 이해가 쉽고, DAG 설정을 한눈에 파악할 수 있음DAG에 여러 Operator를 추가하거나 Task 흐름을 정의하기 수월 DAG Factory를 구현할 경우, 반복적인 D..
DAG와 Task의 동시성을 관리하기 위한 변수DAG와 Task의 병렬 처리를 관리하기 위해 사용하는 Airflow 변수는 다음과 같다.parallelism : Scheduler당 동시에 실행할 수 있는 최대 task Instance 수를 정의하며, Worker 수와 무관max_active_tasks_per_dag : 각 DAG에서 동시에 실행하도록 허용된 최대 Task Instance 수max_active_runs_per_dag : DAG당 활성 DAG 실행의 최대 수 이전에 parallelism에 대해서는 글을 작성한 적이 있기에 parallelism에 대해 자세히 알고 싶다면 아래의 링크에서 확인하면 좋을 것 같다. 여기서는 max_active_tasks_per_dag, max_active_runs..