프로그래밍/Data process

Airflow에서 보기 편하게 Task를 묶어주는 - TaskGroup

Dibrary 2022. 10. 31. 09:50
반응형

안녕하세요 Dibrary입니다.

Airflow 책을 보면서 Task를 구성하고 연결하는 것 까지는 해보았는데, 갯수가 많은 경우는 보기가 복잡할 수 있겠다~ 싶은 점이 있었습니다.

아니나 다를까, 최근 Airflow는 TaskGroup이라는 기능이 있어서 graph에서 보기 편하게 해 주는 기능이 있었습니다.

 


graph를 사용하지 않은 기본 코드를 먼저 작성 해 보겠습니다.

위 코드의 graph를 보면 아래와 같이 나옵니다.

말 그대로  task_0에서 2가지 task로 분기가 되고, task_1_2에서 3가지로 분기가 되었다가 task_1_3_4에서 다시 모입니다.

Task의 흐름을 보여드리고자 DummyOperator만 사용했습니다. BashOperator 및 PythonOperator를 사용하셔도 볼 수 있습니다.

 

근데, 지금 Task 가 10개도 채 안되는데 벌써 >>를 사용한 의존성 연결부분에 코드가 꽤나 길어집니다.
만일 Task가 500개라면 어떨까요? 생각하기 막막합니다.

 


그래서 TaskGroup을 사용하면 아래와 같이 됩니다.

우선 TaskGroup은 2곳에서 쓰였는데, 사실 tg_2는 그냥 단순히 하나의 Task만 정의해도 되었겠네요.

중요한 포인트는, TaskGroup 안에 TaskGroup을 또 쓴 것입니다.

앞전 Task의 흐름과 같은데 더 보기가 쉽습니다. 또한, TaskGroup은 펼치거나, 오므리거나 해서 보이는 수준을 조절할 수 있습니다.

 


그리고 번외로, Task는 list에 for문으로 담아서도 표현할 수 있습니다.

제가 표시한 부분을 잘 보시면, temp라는 list만을 그대로 사용했습니다.

이렇게도 가능하다는 것.

728x90
반응형