컴퓨터 공부/💿 Airflow

[Airflow] Python operator 기본

letzgorats 2023. 8. 20. 12:11

파이썬 오퍼레이터는 어떤 역할을 하는지 알아봅시다.

 

  • 먼저 라이브러리를 어떻게 사용하는지부터 살펴볼까요?
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에 대해 살펴봤습니다.

반응형