홍카나의 공부방

[Airflow] Python 외부 함수 가져와서 사용하기 본문

Data Engineering/Airflow

[Airflow] Python 외부 함수 가져와서 사용하기

홍문관카페나무 2023. 11. 16. 14:36
from airflow.operators.python import PythonOperator

 

airflow DAG의 위 코드를 해석해보면

airflow > operators > python의 PythonOperator 클래스(또는 함수)를 불러오라

로 해석할 수 있다.

 

DAG에서 외부 함수를 가져오려면 import 경로를 어떻게 해줘야 할까?

docker에 있는 airflow container로 들어가서 sys.path 변수에 담겨있는 경로로 파이썬 파일을 집어넣으면 된다.

 

sys.path

 

컨테이너 내부에서 파이썬을 실행시키고 sys.path를 출력해주면

import할 수 있는 여러 경로들이 리스트 형태로 나온다.

' ', 는 실행하는 파이썬 파일과 동일한 경로를 지칭하며, 아래 5가지는 pip로 설정된 경로다.

 

sys.path에 값을 추가하려면

sys.path.append('/home/hongcana') 등으로 명시적으로 append를 이용해서 리스트에 경로를 추가하거나

OS 환경변수인 PYTHONPATH에 값을 추가하면 되는데

 

airflow에서는 자동으로 dags 폴더와 plugins 폴더를 sys.path로 지정한다.

컨테이너에서 airflow info를 입력해보면 paths info가 나오는데, python path에 dags와 plugins 폴더가 잡혀있는 것을 볼 수 있다.

쉽게 말하자면 그냥 plugins에 넣어주면 된다는 이야기.

 

 


 

WORKSPACE_FOLDER={airflow 폴더 경로}
PYTHONPATH=${WORKSPACE_FOLDER}/plugins

 

그리고 .env파일을 airflow 폴더에 만들어서

이런식으로 WORKSPACE_FOLDER라는 변수에 폴더 경로를 바인딩해주면 된다.

 

그래야 DAG를 작성할 때 plugins 아래에 있는 폴더/파일로 바로 꽂아줄 수 있다.

반응형