작성
·
45
답변 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 인턴입니다.
김세은 님의 질문은 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를 사용할 수 없다는 점을 유의해야 합니다.
관련 질문에 대한 다른 학습자와의 토론을 참고하시면 김세은 님의 이해를 더 돕기 위해 유용할 것입니다:
Task는 DAG 내에서 유니크해야 하고, 동일한 Task를 여러 번 기술하는 것보다는 Task ID를 잘 정의하여 ODM(Ordered Dependency Management)을 확립하는 것이 중요합니다. [t4, t7]와 같은 설정은 문제가 없으나, t4
라는 Task ID가 여러 번 사용되면 DAG 내에서 혼란을 초래할 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.