작성
·
59
·
수정됨
답변 2
0
안녕하세요 clulin 님!
Base operator를 사용할 때 bash_command 파라미터의 값이 .sh 로 끝나는 경우 스크립트 자체를 Jinja 템플릿으로 해석하려고 시도합니다.
그런데 조건이 있습니다. 쉘 파일을 dags 디렉토리 아래에 두어야 한다는 조건이 있습니다.
dags 아래 여러 디렉토리를 계층으로 두더라도 꼭 dags 디렉토리 아래에 쉘 파일이 있어야 인식이 가능합니다.
에러를 안나게 하는 방법은 2가지인데,
1) 쉘 파일을 dags 디렉토리 아래에 두고, bash_command 파라미터를 dags 아래 상대 경로로 작성해주세요.
예를 들어 dags/shells/select.sh 이렇게 두었다면 bash_command를 아래처럼 작성해보세요.
bash_command=shells/select.sh
이 방법은 select.sh 파일 안에 {{ data_inverval_end }} 와 같이 Template 변수가 작성되어 있을 때 적용할 수 있습니다.
2) bash_command 파라미터 작성시 띄어쓰기를 하나 포함해주는 방법이 있습니다.
그럼 .sh 로 끝나지 않고 띄어쓰기가 하나 있으므로 Jinja 템플릿으로 해석하려는 시도를 하지 않습니다.
쉘 파일 안에 Template 변수가 없고 단순히 그냥 실행만 하고자 하면 이 방법을 사용하면 됩니다.
이에 대한 설명은 Airflow 가이드 문서 참고해보세요 ^^
답변이 되었을까요?
궁금한건 언제든 물어보세요 ^^
0
안녕하세요, 인프런 AI 인턴입니다. cluelin님.
jinja2.exceptions.TemplateNotFound
에러는 파이썬 스크립트에서 파일 또는 디렉토리를 찾지 못했을 때 발생하는 문제입니다. 이와 관련해서 몇 가지 확인해보셔야 할 사항을 안내드립니다.
디렉토리 및 파일 경로 확인: 지정된 경로 /opt/airflow/plugins/shell/select.sh
에 실제로 파일이 존재하는지 확인하세요. 쉘 파일이 올바르게 위치에 있어야 합니다. WSL 또는 Docker 환경에서 경로가 올바르게 마운트되어 있는지 확인하세요.
Mount 된 패스 확인: Airflow를 Docker에서 사용 중이라면, docker-compose.yaml
파일을 확인하여 볼륨 마운트가 제대로 설정되어 있는지 확인하셔야 합니다. 경로를 잘못 설정하면 컨테이너 내부에서 파일을 찾을 수 없습니다.
BashOperator 설정 확인: BashOperator
에서 bash_command
파라미터에 적힌 경로가 올바른지 확인해야 합니다. 경로에 오타가 있는 경우도 동일한 에러가 발생할 수 있습니다.
BashOperator
가 경로를 찾지 못하는 문제가 일반적으로 경로 설정 오류에서 발생하므로 위의 사항들을 하나씩 점검하시면 도움이 될 것입니다.
관련해서 다음과 같은 질문들이 도움이 될 수 있습니다:
- Task 실행관련 질문입니다.
- bashoperator에 외부 쉘파일 수행하기
이 외에도 여러 명확한 사례가 있으니 참고하시길 바라며, 문제가 계속되신다면 현재 설정을 보다 자세히 알 수 있게 추가적인 정보를 제공하여 질문을 남겨주시면 도움이 될 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
상세한 답변감사드립니다!