이전 작업이 성공했는지 여부에 관계없이 클러스터를 종료하고 싶으므로 ALL_DONE
소리가 적절합니다. Start_Cluster는 별개입니다. 실패 할 경우 종료 할 클러스터가 없을 수도 있습니다. 단, 경우에 따라 확인/시도해야 할 수도 있습니다.
기본 trigger_rule은 ALL_SUCCESS
입니다. 예를 들어 작업 1이 실패하면 작업 2는 작업 1을 실행해야하므로 전체 Dag가 실패합니다.
작업이 실패 할 수도 있지만 여전히 클러스터를 종료하려는 경우 dag를 따라갈 수있는 대체 경로가 필요합니다. PythonBranchOperator
을 사용하고 파이썬 콜백 함수를 사용합니다.
또 다른 가능성은 trigger_rule이 "ONE_FAILURE"인 더미 연산자를 사용하고 클러스터 종료 작업을 실행하는 것입니다.
당신이 더미 작업 "Task_Failure"라는 예를 들어,이 종속성 체인 될 것이다 : 그 시나리오에서
Start_Cluster >> Task_2 >> Task_3 >> Terminate_Cluster
Task_2 >> Task_Failure
Task_3 >> Task_Failure
Task_Failure >> Terminate_Cluster
, Task_Failure 것 아마 약간의 가능성이 있기 때문에, ONE_SUCCESS
에 Terminate_Cluster의 trigger_rule을 설정해야 작업이 실행되지 않습니다. 최종 작업을 ALL_DONE
으로 설정하고 이전 작업 중 일부에 상태가 없으면 중단되거나 실패 할 수 있습니다.
ALL_DONE과 ALL_SUCCESS의 차이 : https://stackoverflow.com/a/47716981/1335793