작성
·
21
·
수정됨
0
안녕하세요.
airflow 파일의 폴더 구성에 대해 문의드립니다.
airflow 를 사용하다보면 dag 외에 여러 파일이 필요한데 이때 해당 파일을 어떻게 정리하면 좋을지 궁금해서요.
plugins 폴더에는 PythonOperator 에서 사용하는 함수 혹은 커스텀 오퍼레이터를 작성하는거 같습니다.
궁금한점은 오퍼레이터에 간접적으로 사용되는 함수도 plugins 폴더에 위치하는지 궁금합니다. 예를 들어 SQL 파일을 읽을때 SQL 파일을 읽어주는 함수를 작성한다고 해보면 해당 함수는 오퍼레이터에 간접적으로 사용됩니다. 그러면 해당 함수도 plugins 폴더에 위치하는게 권장되는걸까요 아니면 dags 폴더에 위치하는게 좋을까요?
shell 파일은 plugins 폴더에 위치하는게 좋다고 하셨는데 그러면 sql 파일은 어떻게 위치하는게 좋은지 궁금합니다.
아래와 같은 방식이면 되는지 확인 부탁드립니다!.
dags
plugins
......ㄴ sql
............ㄴ read_table.sql
......ㄴ lib
............ㄴ common.py
......ㄴ shell
............ㄴ file_read.sh
......ㄴ custom_operator
............ㄴ file_parse.py
dags 폴더에는 정말 dag 파일만 위치하는게 좋은지도 궁금합니다.
답변 1
0
안녕하세요 가보자고님
오랜만에 질문글 올려주셨네요!
sql 파일을 담은 디렉토리는 굳이 plugins 아래에 있을 필요는 없습니다.
dags
plugins
sqls
이런식으로 sqls 를 $AIRFLOW_HOME 바로 아래에 위치시켜도 좋습니다.
어차피 plugins 내 오퍼레이터들이 sqls 를 바라볼 수만 있으면 되니까요.
그리고 sh 파일도 dags, plugins 외 다른 디렉토리에 두어도 상관은 없습니다.
airflow worker가 실행할 수 있도록 절대경로로 shell 위치를 지정해주면
어느 위치에 있어도 실행은 가능하니 plugins 아래에 있지 않아도 상관은 없습니다.
프로젝트 수행시 아래처럼 폴더 구조를 잡기도 합니다.
dags/
plugins/
|- operators/
|- sensors/
config/
files/
|- sqls/
|- ingest/
아 그리고 dags 폴더에는 가급적 dag 파일만 있는게 좋긴합니다. dag 파일이 많다면 dags 폴더 안에 폴더를 두는것도 가능해서, 폴더를 구분해서라도 가급적이면 dag 파일만 있는게 깔끔하죠..
참고하세요 ^^