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

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

brianbok97님의 프로필 이미지
brianbok97

작성한 질문수

Airflow 마스터 클래스

BranchPython 오퍼레이터로 분기처리하기

task 실행중 오류

작성

·

49

·

수정됨

0

안녕하세요 강사님 강의 잘 보고 있습니다

다름이 아니라 특정 조건에서 task가 실행되지 않아 해결방법을 묻고자 글을 남깁니다.

task가 실행되지 않고 발생하는 log

*** Could not read served logs: Invalid URL 'http://:8793/log/dag_id=dags_get_data_python_operator/run_id=manual__2024-12-20T09:11:57.447383+00:00/task_id=refine_data_/attempt=1.log': No host supplied

 

image.png

 

branch에 따른 dag에 작성한 taskflow는 다음과 같습니다

  • get_data_ >> check_dir_ >> get_yesterday_data_ >> refine_data_ >> delete_data

  • get_data_ >> check_dir_ >> refine_data_ >> delete_data

batch 당일 데이터와 전날 데이터를 이용해서 spark를 이용해 정제하는 작업인데,

전날 데이터가 수집되어있지 않다면 수집하고나서 sparksubmit을 하도록 task를 구성했습니다.

전날 데이터가 없는 상태로 dag를 실행하면 전체task가 잘 실행이되고

전날데이터가 존재한다면 원하는 task 까지 skipped이 되고 해당 log가 나오네요 ㅠㅠ

task 플로우를 잘못 작성한 이유일까요 ?


 추가)

BranchPython task에 찍힌 log 입니다.

image.png

 

답변 3

0

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

앗 brianbok97님

원인을 찾으셨군요. 제가 답글이 늦었습니다.

일단 원인은 trigger rule이 맞습니다. 기본이 all_success이기 때문에 refine_data_ 입장에서는 상위가 get_yesterday_data_ task도 상위 중 하나이므로 이 task도 success 해야 수행됩니다.

 

trigger_rule을 변경하셨다면 one_success 로 바꾸셨을 것 같네요.

정 trigger_rule을 사용하기 꺼려진다면 get_yesterday_data_ task를 수정해서 어제 날짜가 존재한다면 그냥 빠져나오도록 수정하는 것도 괜찮은 방법일 듯 합니다. 그럼 success 로 보이긴 하니깐요.

 

그리고 spark plugin 도 설치하셨나요? 강의에 없던 내용인데 훌륭하십니다 ^^

0

brianbok97님의 프로필 이미지
brianbok97
질문자

trigger_rule 이라는 파라미터를 추가해서 해결했습니다.. 이게 최선의 방법일지 궁금합니다 !

0

brianbok97님의 프로필 이미지
brianbok97
질문자

단순한 bash 커멘드도 실행 못하는것 보니 spark 문제는 아닌것 같고,

task flow의 문제인것 같습니다 ㅠㅠ..

image.png

이런 방향으로 진행시키고 싶으면 어떻게 작성하면 될까요 ..?

branch에서 쓰는 함수에 return 하는 task를 여러개를 줘야하는건가요??

brianbok97님의 프로필 이미지
brianbok97

작성한 질문수

질문하기