인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

김세은님의 프로필 이미지

작성한 질문수

Airflow 마스터 클래스

task 연결하기

>> 가 이해가 잘 안갑니다ㅠㅠ

작성

·

45

0

task 연결하기 강의에서

t1 >> [t2, t3] >> t4

t5 >> t4

[t4, t7] >> t6 >> t8

이렇게 작성하셨는데

t1 >> [t2, t3] >> t4

t5 >> [t4, t7] >> t6 >> t8

이렇게 해도 될까요?

순서도 그릴때 task는 무조건 한번씩만 실행되는건가요?

t4

[t4,t7] 이렇게 t4를 두번 작성해도 되는지 궁금합니다.

답변 2

0

김현진님의 프로필 이미지
김현진
지식공유자

안녕하세요 김세은님!

세은님께서 작성하신걸로 만들게 되면 다른 DAG이 만들어집니다.

원래의 task flow에서 t7은 t5와 dependency가 없습니다.

그러나 아래처럼 만들면 t5가 끝나야 t4와 t7이 시작되는 구조가 되어 버리는 거죠.

t1 >> [t2, t3] >> t4

t5 >> [t4, t7] >> t6 >> t8

 

원래 구조에서 t7은 선행이 없습니다. DAG이 시작되면 t7이 바로 시작될 수 있는 구조에요.

세은님이 작성하신 구조처럼 한번 바꿔보시고 DAG Graph 에서 어떻게 변화하는지 직접 한번 보시는게 제일 좋을거에요.

 

그리고 task flow내 존재하는 task는 한번만 실행되어야 합니다.

task를 실행했는데 조금 있다가 또 실행되면 논리적으로 DAG(Directed Acyclic Graph, 일방향 그래프)이 아닌거죠.

task flow를 정의할 때 task는 여러 번 나와도 되며 순환되지만 않으면 됩니다.

이것도 세은님이 한번 해보시고 어떤 에러가 발생하는지를 보시는게 가장 좋을 듯 합니다.

 

t1 >> [t2, t3] >> t4

t5 >> t4

[t4, t7] >> t6 >> t8 >> t5

 예를 들어 이렇게 작성하면 순환되는 그래프가 됩니다. 이렇게 작성하시면 에러가 발생해서 DAG parsing에 오류가 발생할거에요.

 

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다.

김세은 님의 질문은 Airflow에서의 Task Dependency 설정에 대한 궁금증으로 이해됩니다. 아래에 자세한 설명과 참고 링크를 드리겠습니다.

Airflow에서의 >> 연산자는 Task 간의 종속성을 설정하는 데 사용됩니다. 예를 들어, t1 >> [t2, t3] >> t4는 t1이 먼저 실행된 후 t2와 t3가 동시에 실행되고, 그 후에 t4가 실행된다는 것을 의미합니다.

김세은 님께서 제시한 두 번째 예시, t5 >> [t4, t7] >> t6 >> t8은 흐름을 조금 다르게 설정한 것입니다. 여기서 [t4, t7]은 t5가 완료된 후 동시에 실행되는 두 개의 Task를 의미합니다. 두 예제가 모두 사용 가능합니다. 그러나 동일한 Task를 여러 곳에서 재사용하거나 여러 종속성을 가지는 경우는 주의 깊게 설계해야 합니다. Airflow는 Task는 unique하게 설계되어야 하며, 같은 DAG 내에서 중복된 Task ID를 사용할 수 없다는 점을 유의해야 합니다.

관련 질문에 대한 다른 학습자와의 토론을 참고하시면 김세은 님의 이해를 더 돕기 위해 유용할 것입니다:

  • Label 설정 질문드립니다.: 이 질문에서는 Airflow의 DAG 내에서 Task 관계 설정에 대한 심도 있는 논의가 이루어졌습니다.
  • trigger rule 설정 질문: Task의 실행 조건과 관련하여 추가적으로 배울 수 있는 내용이 포함되어 있습니다.

Task는 DAG 내에서 유니크해야 하고, 동일한 Task를 여러 번 기술하는 것보다는 Task ID를 잘 정의하여 ODM(Ordered Dependency Management)을 확립하는 것이 중요합니다. [t4, t7]와 같은 설정은 문제가 없으나, t4라는 Task ID가 여러 번 사용되면 DAG 내에서 혼란을 초래할 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.