Apache Airflow에서 DAG와 Task는 워크플로우를 정의 및 실행을 하는 핵심 개념으로 사용됩니다.
DAG(Directed Acyclic Graph)
- 정의 :
- 작업(Task)들의 흐름을 나타내는 구조로, 방향성이 있으면서 사이클이 없는 그래프 입니다.
- 역할 :
- 워크플로우의 전체 구조를 정의
- 작업 간의 순서와 의존성을 나타냄
- 지정된 시간(Schedule)에 따라서 실행됨
- 특징 :
- Directed(방향성) : 작업은 항상 지정된 순서로만 실행됩니다.
- Acyclic(비순환성) : 작업 순환이 없어 무한루프가 발생되지 않습니다.
from airflow import DAG
from airflow.operators.dummy_operator import DummyOperator
from datetime import datetime
with DAG(
dag_id='example_dag',
start_date=datetime(2024, 1, 1),
schedule_interval='@daily'
) as dag:
task1 = DummyOperator(task_id='start') # task를 비어있는 더미로 생성
task2 = DummyOperator(task_id='middle')
task3 = DummyOperator(task_id='end')
task1 >> task2 >> task3 # 작업의 순서 및 의존성 정의
Task
- 정의 : Task는 DAG 내에서 실제로 수행되는 작업의 단위입니다.
- 역할 :
- 데이터 처리, 파일 전송, API 호출 등 다양한 작업을 수행합니다.
- DAG의 노드(node)에 해당하며, 특정 Operator를 통해 정의됩니다.
- 종류 :
- Operator: 작업을 수행하기 위한 기본 빌딩 블록.
- DummyOperator: 작업 없이 흐름을 테스트하거나 중간 단계를 나타냄.
- PythonOperator: Python 함수를 실행.
- BashOperator: Bash 스크립트를 실행.
- HttpOperator: HTTP 요청을 보냄.
- PostgresOperator: Postgres SQL 쿼리를 실행.
- 의존성 :
- task간 실행 순서를 지정하기 위해서 >>와 같은 순서를 지정하는 연산자를 사용해야함
task1 >> task2 #task1이후에 task2실행
task1 >> [task2, task3] # task1이후에 task2, task3 실행
task에서 사용되어지는 오퍼레이터의 종류에 따라서 행해지는 작업들이 달라집니다. bash, GCS에 전송, google cloud의 big query의 database 생성 및 제거와 같은 다양한 작업을 할 수 있습니다.
'Codeit Sprint > Weekly_Paper' 카테고리의 다른 글
위클리 페이퍼 #17 - On-premise, Cloud, Serverless 데이터 웨어하우스의 특징 (0) | 2024.12.09 |
---|---|
위클리 페이퍼 # 16 - Airflow Operators (0) | 2024.12.02 |
위클리 페이퍼#15 - 엔터티, 속성, 관계 (0) | 2024.11.24 |
위클리 페이퍼#15 - 데이터베이스 정규화 (0) | 2024.11.24 |
위클리 페이퍼 #14 - GROUP BY와 HAVING 절 (1) | 2024.11.17 |