파이썬 오퍼레이터는 어떤 역할을 하는지 알아봅시다.
- 먼저 라이브러리를 어떻게 사용하는지부터 살펴볼까요?
from airflow.operators.python import PythonOperator
# bash operator는 .bahs 였다면, python operator는 .python으로 라이브러리를 불러옵니다.
- Python Operator는 무엇을 하는 오퍼레이터일까요?
: "정의된 파이썬 함수를 실행시키는 오퍼레이터" 입니다. (오퍼레이터는 새로운 파일을 생성하는 것이 아닌, 기존 파일을 실행 시켜주는 역할을 합니다.) - 가장 많이 쓰이는 Operator로서, Airflow를 배운다면, 꼭 알아야 하는 오퍼레이터라고 할 수 있습니다!
※ 파이썬 모듈에는 어떤 오퍼레이터가 있을까?
패키지 오퍼레이터 중요도 설명 airflow.operators.python PythonOperator ⭐⭐⭐ 어떤 파이썬 함수를 실행시키기 위한 오퍼레이터 BranchPythonOperator ⭐ 파이썬 함수 실행 결과에 따라 task를 선택적으로 실행시킬 때 사용되는 오퍼레이터 ShortCircuitOperator 파이썬 함수 실행 결과에 따라 후행 task를 실행하지 않고 종료시킬 수 있는 오퍼레이터 PythonVirtualenvOperator 파이썬 가상환경 생성 후 Job 수행하고 마무리되면 가상환경 삭제까지 해주는 오퍼레이터 ExternalPythonOperator 기존에 존재하는 파이썬 가상환경에서 Job 수행하게 하는 오퍼레이터
그럼 실습을 한 번 진행해보죠!
코드는 아래와 같습니다.
import datetime
import pendulum
from airflow import DAG
from airflow.operators.python import PythonOperator
import random
with DAG(
dag_id="dags_python_operator",
schedule="30 6 * * *",
start_date=pendulum.datetime(2023, 8, 1, tz="UTC"),
catchup=False,
) as dag:
def select_dog():
dogs = ['Bulldog','Pomeranian','Poodle','Chihuahua','Dashhund']
rand_int = random.randint(0,4)
print(dogs[rand_int])
py_t1 = PythonOperator(
task_id = 'py_t1',
python_callable=select_dog
)
py_t1
파이썬 오퍼레이터를 쓰기 위해 패키지와 모듈을 불러옵니다.
schedule은 매일 6시 30분에 실행하는 데일리 작업으로 만들어줬습니다.
파이썬 오퍼레이터를 쓰기 위해서는, 함수를 작성해야 하는데요,
select_dog 이라는 함수를 정의해주고, py_t1 task에서 해당 함수를 불러서 실행시키는 python_callable 을 통해 select_dog을 불러줍니다.
위 실습에서는 py_t1 이라는 task 한 개만 있는 간단한 실습입니다.
그럼 airflow에 어떻게 나타나는지 확인해보겠습니다.
해당 dag을 unpaused 시켜주고, 실행된다면 로그를 확인해봅니다.
randint함수를 통해, dogs리스트 중에 Chihuahua가 출력된 것을 확인할 수 있었습니다.
(return 값이 None인 이유는, 보통 함수를 작성할 때, 반환 값을 써주지만, 해당 select_dog 함수에는 특정 return값을 작성해주지 않았기 때문입니다.)
정리를 해보자면,
PythonOperator는 airflow 밑에 Operators 밑에, python 이라는 패키지 밑에 있기에 모듈을 불러와서 사용합니다.
이 패키지 밑에는 여러가지 다른 python을 관리하는 operator가 있었는데요, 그 중에서 가장 많이 쓰이는 오퍼레이터가 PythonOperator이고, 이는 우리가 만든 파이썬 함수를 실행시켜주는 오퍼레이터라고 할 수 있습니다.
이상으로, PythonOperator에 대해 살펴봤습니다.
'컴퓨터 공부 > 💿 Airflow' 카테고리의 다른 글
[Airflow] @task 데코레이터 사용하기 (2) | 2023.08.24 |
---|---|
[Airflow] 외부 파이썬 함수 수행하기 (2) | 2023.08.23 |
[Airflow] Email Operator로 메일 전송하기 (0) | 2023.08.20 |
[Airflow] Bash Operator & 외부 쉘 파일 수행하기 (2) | 2023.08.19 |
[Airflow] Task 연결하기 (0) | 2023.08.18 |