섹션7: Custom operator 개발 study

류홍규·2023년 8월 15일
0

airflow

목록 보기
8/18
post-thumbnail

1. Airflow의 꽃, Custom 오퍼레이터

  • AIrflow는 오퍼레이터를 직접 만들어 사용할 수 있도록 클래스를 제공해준다.
    - BaseOperator (부모 클래스)
  • BaseOperator는 상속시 두가지 메서드를 정의해야한다.(Overriding) 자식클래스 재정의
    1. def __init__ : 생성자 재정의
    - 클래스에서 객체 생성시 객체에 대한 초기값을 지정하는 함수
    2. def execute(self, context)
    - __init__생성자로 객체를 얻은 후 execute 메서드를 실행시키도록 되어있다. 비즈니스 로직은 execute에 구현이 필요하다.

2. Custom 오퍼레이터 개발 Study

  • 오퍼레이터 기능 정의
    - 서울시 공공데이터 API를 호출하여 전체 데이터를 받은 후 .csv 파일로 저장하기
  • 오퍼레이터와 dag의 위치
    - /dags
    • dags_seoul_api.py
    • /plugins
      • /operators
        - seoul_api_to_csv_operator.py

  • 어떤 파라미터에 Template문법을 사용할지 지정을 해 주면 된다.
    template_fields: Sequence[str] = ("name", )

Creating a Custom Operator airflow 공식문서


<예제1>

hello_task =HelloOperator(
	task_id='xxxx',
    name = '~~~~~',
    abc = '~~~~~',
)
  • super().__init__(**kwargs)
    - 부모함수(BaseOperator)의 생성자를 호출

  • name 외에 명시되어 있지 않는 다른 변수는 **kwargs에 캡쳐가 된다.


<예제2>

  • 어떤 파라미터에 Template문법을 적용하고 싶은지는 template_fields: Sequence[str] = ("name", )를 통해 지정해주면 된다.
profile
공대생의 코딩 정복기

0개의 댓글