터칭 데이터

Task Groups 본문

Airflow 고급 기능, dbt, Data Catalog

Task Groups

터칭 데이터 2024. 1. 3. 18:08

 

 

태스크 그룹핑의 필요성

 

태스크 수가 많은 DAG라면 태스크들을 성격에 따라 관리하고 싶은 니즈 존재

SubDAG이 사용되다가 Airflow 2.0에서 나온 Task Grouping으로 넘어가는 추세

    - SubDAG를 비슷한 일을 하는 태스크들을 SubDAG라는 Child Dag로 만들어서 관리

 

다수의 파일 처리를 하는 DAG라면

파일 다운로드 태스크들과 파일 체크 태스크와 데이터 처리 태스크들로 구성

 

 

 

 

 

 

 

 

 

 

 

 

 

예제 살펴보기 - 소스코드

Learn Task Groups

from airflow.models.dag import DAG
from airflow.operators.empty import EmptyOperator
from airflow.operators.bash import BashOperator
from airflow.utils.task_group import TaskGroup
import pendulum

with DAG(dag_id="Learn_Task_Group", start_date=pendulum.today('UTC').add(days=-2), tags=["example"]) as dag:
    start = EmptyOperator(task_id="start")

    # Task Group #1
    with TaskGroup("Download", tooltip="Tasks for downloading data") as section_1:
        task_1 = EmptyOperator(task_id="task_1")
        task_2 = BashOperator(task_id="task_2", bash_command='echo 1')
        task_3 = EmptyOperator(task_id="task_3")

        task_1 >> [task_2, task_3]

    # Task Group #2
    with TaskGroup("Process", tooltip="Tasks for processing data") as section_2:
        task_1 = EmptyOperator(task_id="task_1")

        with TaskGroup("inner_section_2", tooltip="Tasks for inner_section2") as inner_section_2:
            task_2 = BashOperator(task_id="task_2", bash_command='echo 1')
            task_3 = EmptyOperator(task_id="task_3")
            task_4 = EmptyOperator(task_id="task_4")

            [task_2, task_3] >> task_4

    end = EmptyOperator(task_id='end')

    start >> section_1 >> section_2 >> end

 

TaskGroup 안에 TaskGroup nesting 가능
TaskGroup도 태스크처럼 실행 순서 정의 가능

 

from airflow.utils.task_group import TaskGroup
    start = EmptyOperator(task_id="start")
    with TaskGroup("Download", tooltip="Tasks for downloading data") as section_1:
    task_1 = EmptyOperator(task_id="task_1")
    task_2 = BashOperator(task_id="task_2", bash_command='echo 1')
    task_3 = EmptyOperator(task_id="task_3")
    
    task_1 >> [task_2, task_3]
    
start >> section_1

 

 

 

 

 

 

 

 

 

 

 

예제 살펴보기 - 그래프 표현 살펴보기

 

 

 

 

 

 

 

 

 

 

 

데모

 

TaskGroup DAG 실행

 

Web UI에서 그래프 확인

 

 

 

 

 

 

 

 

'Airflow 고급 기능, dbt, Data Catalog' 카테고리의 다른 글

Airflow 운영과 대안  (0) 2024.01.04
Dynamic Dags  (0) 2024.01.03
Airflow DB 살펴보기  (0) 2024.01.03
Dag-Dependencies 데모  (0) 2024.01.03
Dag Dependencies - 나머지  (0) 2024.01.03