컴퓨터 공부/💿 Airflow

[Airflow] Edge Label

letzgorats 2023. 8. 30. 08:51

오늘은 간단한 개념인 Edge Label을 짚고 넘어가볼까 합니다.

 

1. Edge Label 개념이란 무엇일까요?

     : Task 연결에 대한 설명(Comment)입니다.

edge label

굉장히 간단합니다. 말 그대로, Task 간의 edge에 있는 comment를 뜻합니다. 

바로 실습을 해보도록 하죠.

 

2. Edge Label 실습 #1

from airflow.utils.edgemodifier import Label
    empty_1 = EmptyOperator(
        task_id='empty_1'
    )
    
    empty_2 = EmptyOperator(
        task_id='empty_2'
    )
    
    empty_1 >> Label('1과 2사이') >> empty_2

먼저, 라벨을 달려면, airflow.utils.edgemodifier에서 Label을 import 해줘야 합니다.

위 코드처럼 task 2개가 있을 때, flow를 만들어줄 때, 그 사이에 가지고 온 Label() 클래스에 comment를 써주면 됩니다.

그러면, airflow UI에서 봤을 때, 두 task 사이에 있는 edge에 작성한 comment가 보이게 됩니다.

 

2. Edge Label 실습 #2

from airflow.utils.edgemodifier import Label
    
    empty_2 = EmptyOperator(
        task_id='empty_2'
    )
    empty_3 = EmptyOperator(
        task_id='empty_3'
    )
    empty_4 = EmptyOperator(
        task_id='empty_4'
    )
    empty_5 = EmptyOperator(
        task_id='empty_5'
    )
    empty_6 = EmptyOperator(
        task_id='empty_6'
    )
    
empty_2 >> Label('Start Branch') >> [empty_3,empty_4,empty_5] >> Label('End Branch') >> empty_6

해당 코드에서 flow를 봤을 때, 아래와 같은 그래프를 형성할 것입니다.

실습 2 flow

여기서 분기가 되는 시점이나 모이는 시점에 Label()을 넣는다면 airflow UI에서는 어떻게 보여지게 될까요?

분기되고 모이는 모든 edge에 Label이 붙습니다!

 

바로 실습을 해보겠습니다.

dags폴더에 dags_empty_with_edge_label.py 라는 파일을 생성해 아래와 같이 작성합니다.

from airflow import DAG
import pendulum
from airflow.operators.empty import EmptyOperator
from airflow.utils.edgemodifier import Label

with DAG(
    dag_id ="dags_empty_with_edge_label",
    schedule=None,
    start_date=pendulum.datetime(2023,8,1,tz="UTC"),
    catchup=False
) as dag:
    
    empty_1 = EmptyOperator(
        task_id='empty_1'
    )
    empty_2 = EmptyOperator(
        task_id='empty_2'
    )

    empty_1 >> Label('1과 2사이') >> empty_2

    empty_3 = EmptyOperator(
        task_id='empty_3'
    )
    empty_4 = EmptyOperator(
        task_id='empty_4'
    )
    empty_5 = EmptyOperator(
        task_id='empty_5'
    )
    empty_6 = EmptyOperator(
        task_id='empty_6'
    )
    
    empty_2 >> Label('Start Branch') >> [empty_3,empty_4,empty_5] >> Label('End Branch') >> empty_6

airflow에서 그래프를 확인해보면, 아래와 같습니다.

task flow

empty_1과 empty_2 사이에 "1과 2사이"라는 edge_label이 붙었고, 

분기가 되는 empty_2에 연결된 후행 task의 모든 edge에 "Start Branch"가 붙었으며,

empty_6로 모이는 선행 task와 연결된 모든 edge에도 "End Branch"라고 라벨이 붙어있습니다.

 

이상으로, Edge Label의 개념과 사용방법에 대해 알아봤습니다!

반응형