-
[Data Pipelines with Apache Airflow] 3. Airflow의 스케줄링Software Development/Data Engineering 2022. 8. 2. 21:00
해당 블로그의 내용은 책(Apache Airflow 기반의 데이터 파이프라인)을 요약 정리한 것입니다.
3.3 데이터 증분 처리하기
스케줄된 하나의 작업에서 처리해야 할 데이터 양을 크게 줄일 수 있기 때문에 전체 데이터 셋을 처리하는 것보다 효율적인 방식.
3.3.2 실행 날짜를 사용하여 동적 시간 참조하기
Airflow는 태스크가 실행되는 특정 간격을 정의할 수 있는 추가 매개변수를 제공.
execution_date: DAG가 실행되는 날짜와 시간. 매개변수 이름과 달리 execution_date는 DAG를 시작하는 시간의 특정 날짜가 아니라 스케줄 간격으로 실행되는 시작 시간을 나타내는 타임스탬프.
3.3.3 데이터 파티셔닝
데이터 세트를 더 작고 관리하기 쉬운 조각으로 나누는 작업은 데이터 저장 및 처리 시스템에서 일반적인 전략입니다. 이러한 방법을 일반적으로 파티셔닝이라고 한다.
3.4 Airflow의 실행 날짜 이해
3.4.1 고정된 스케줄 간격으로 태스크 실행
Airflow가 시작 날짜, 스케줄 간격 및 종료 날짜의 세 가지 매개변수를 사용하여 DAG를 실행하는 시점을 제어할 수 있다.
Airflow는 위 세 가지 매개 변수를 사용하여 시간을 스케줄 간격으로 나눈다.
이 간격 기반 접근 방식을 사용하는 이점은 작업이 실행되는 시간 간격을 정확히 알고 있으므로 이전 장에서 본 증분 데이터 처리 유형을 수행하는 데 적합.
Airflow 실행 날짜를 해당 스케줄 간격의 시작으로 생각해 정의하면 특정 간격의 시작과 끝을 유추할 때 사용할 수 있다.작업을 실행할 때 해당 간격의 시작과 끝은 execution_date(간격 시작) 및 next_execution(다음 간격 시작) 날짜 매개변수로 정의.
태스크에서 매개변수는 스케줄 간격 이후의 DAG 실행을 통해서만 정의된다. UI, CLI를 통한 수동으로 실행하게 된다면, Airflow가 다음 또는 이전 스케줄 간격에 대한 정보를 확인할 수 없기 때문에 매개변수 값이 정의되지 않아 사용할 수 없다.
3.5 과거 데이터 간격을 메꾸기 위해 백필 사용하기
과거의 시작 날짜부터 과거 간격을 정의할 수 있으며 이를 사용해 과거 데이터 세트를 로드하거나 분석하기 위해 DAG의 과거 시점을 지정해 실행할 수 있다. 이를 backfill이라 한다.
3.5.1 과거 시점의 작업 실행하기
catchup 매개변수에 의해 제어. false로 둘 경우 비활성화.
코드 변경후 데이터 재처리시에도 사용 가능.
3.6 태스크 디자인을 위한 모범 사례
원자성, 멱등성
3.6.1 원자성
Airflow 태스크는 성공적으로 수행하여 적절한 결과를 생성하거나 시스템 상태에 영향을 미치지 않고 실패하도록 정의해야 한다.
의존성은 단일 태스크 내에서 두 작업을 유지하여 하나의 일관된 태스크 단위를 형성할 수 있음.
3.6.2 멱등성
동일한 입력 동일한 태스크 여러번 호출 시 결과에 효력이 없어야 한다.
'Software Development > Data Engineering' 카테고리의 다른 글
[Spark] Spark JDBC와 하이브 연동 이슈들. (0) 2023.05.05 [Hive] 하이브 테이블에 Spark으로 적재 시, HQL로 읽을 때, 값이 Null로 조회되는 이슈. (0) 2023.05.02 [Data Pipelines with Apache Airflow] 2. Airflow DAG의 구조 (0) 2022.08.01 [Data Pipelines with Apache Airflow] 1. Apache Airflow 살펴보기 (0) 2022.06.22 대용량 데이터를 수집하기 위한 생산성있는 웹 크롤러의 구조 (0) 2020.11.05