본문 바로가기
Database

Class를 활용한 Custom Operator 생성

by BTC_최총무 2023. 7. 13.

베하!! 반갑습니다~

 

인사통의 BTC_김회장, 최총무입니다!!

 

 

오늘은 Airflow Dag를 생성할때 사용할 Operator를 Custom으로 생성해보겠습니다!

 

Operator에 대한 기초적인 설명은 앞서 문땅훈과 루피팀이 작성해주신 포스팅을 참고해주세요~

 

 

Airflow Operator와 Task

베하 ~! 안녕하세요 문땅훈과 루피입니다! 😆 저번 시간에는 중요한 부분만 골라서 Airflow 구성요소와 동작방식에 대해 설명해드렸는데요~ 이제 본격적으로 Airflow에 대해 알아보도록 합시다 !!

btcd.tistory.com

 

어느정도 구조 파악하셨다면 함께 이번 포스팅 시작해볼까요?

 

개요

  • Airflow Operator의 종류
  • Class를 활용한 Custom Operator 생성

1. Airflow Operator의 종류

위 첨부드린 포스팅을 참고하시면 Airflow Operator는 Task를 어떻게 실행시킬지 실제 작업 실행을 담당하는 역할로 설명되어 있습니다.

 

그러면 내가 원하는 작업을 실행시키려면 어떤 Operator를 사용해야할까요?

먼저 아래 Docs를 살펴봐주시죠!!

 

Public Interface of Airflow — Airflow Documentation

 

airflow.apache.org

 

해당 Docs를 보면 Airflow Operator는 Base Operator를 통해 파생되며 갈래종류를 크게 3가지로 구분하고 있습니다.

 

바로 Action, Transfer, Sensor죠 이 3가지 갈래는 사용자가 Task를 통해 어떤 작업을 하고싶은지에 따라 사용할 Operator의 좋은 갈래 지표가 됩니다!!

이 3가지 종류에 대해 설명드리죠!!

 

1. Action Operator - 작업을 수행하거나 다른 시스템에 작업을 수행하도록 지시하는 Operator

2. Transfer Operator - 한 시스템에서 다른 시스템으로 데이터를 이동하도록하는 Operator

3. Sensor Operator - 특정 기준이 충족될때까지 반복 실행되는 Operator

 

이 세가지 큰 갈래를 통해 Operator의 종류를 선택할 수 있습니다.

Airflow에서 제공하는 Operator들도 상위 Operator들을 살펴본다면 어떤 역할을 하는지 어느정도 파악할 수 있겠죠?

그럼 해당 Operator들을 상속받아 새로운 Operator를 만들어볼까요?


2. Class를 활용한 Custom Operator 생성

만약 작업을 하는데 Airflow가 제공하는 Operator중에 제가 필요한 조건이 없다면 어떻게 해야 할까요?

이럴 때 저희는 Custom Operator를 만들어 사용할 수 있습니다!!

 

예를들어 Bigquery에서 특정 테이블에 원하는 데이터가 있는지 검사하는Sensor가 필요하다고 가정해보죠!

먼저 해당 기능을 수행하는 Bigquery Sensor가 있는지 확인해볼까요?

Docs를 살펴보니 테이블의 여부를 확인하는 Sensor는 있지만 내부 테이블을 SELECT 하는 Sensor는 보이지 않네요!!

 

이런 경우 저희는 Custom Operator를 활용해야합니다.

 

Airflow 제공 Operator 중에 쿼리를 통해 Sensing을 진행하는 sqlsensor가 있어 이를 상속받아 작성하겠습니다.

 

사실 sqlsensor만을 사용해도 작동은 할 수 있지만 Bigquery에 특화된 데이터값들이 중복으로 계속 넣어주어야하는 문제가 있어 너무나도 비효율적입니다.

하지만 Custom으로 Bigquery에 특화된 Sqlsensor를 미리 만들어두면 하나하나 데이터값을 넣을 필요없이 특화된 Operator로 사용할 수 있어요.

 

Class를 상속받아 작성할 때는 상속받을 Operator를 ()안에 넣어 표현하면 됩니다!

간단히 작성한 위 예시를 볼까요?

 

저는 쿼리를 Sensing하는 Sqlsensor를 Class로 가져와 BigquerySqlSensor를 만들었습니다.

 

쿼리 내용을 specific_row_query로 따로 정의해주어 해당 테이블의 name column에 '최총무' 데이터가 있는지만 간단히 작성하였습니다!!

 

여기에서 SELECT나 WHERE를 수정하여 활용할수도 있겠죠?

 

 

이렇게 다양한 Custom Operator를 만들어 자유롭게 호환되는점이 Airflow의 큰 강점이라고 할 수 있습니다!!

Class 상속을 통해 기본적인 틀을 받아오게 되면 생각보다 간단히 작성할 수 있어요~

 

하지만 이러한 상속을 통해 작성하려면 Airflow의 기본 제공 Operator에 대해 많이 알고 있다면 더욱 적합한 틀을 가져올 수 있겠죠?

 

 

오늘은 함께 Custom Operator를 만들어보았습니다!!

 

운영환경은 각각 구조와 상황이 다르기 때문에 기본 제공 Operator로는 부족한 경우가 많습니다.

특히나 자주 사용해야하는 경우면 맞춤형 Operator가 필수적이라고 할 수 있어요!

 

뭐든 첫걸음을 떼어 보는게 중요합니다.

한번 작성해보았으니 Custom을 만든다는 선택지가 하나 생긴셈이죠!!

 

 

오늘은 함께 Custom Operator를 만들어보는 시간을 가졌습니다!

한번 만들어두고 예시로 가지고 있으면 다음번에 만들때 바로 찾아서 활용할 수 있으니 편리하겠죠?

 

그럼 다음시간에도 유용한 정보를 가득 안고 돌아오겠습니다!!

 

모두 베빠~

'Database' 카테고리의 다른 글

ElasticSearch  (0) 2023.07.21
[Airflow] 병렬 처리 Task  (0) 2023.07.17
빅쿼리 보안  (0) 2023.07.07
Airflow Web을 통한 Dag 핸들링  (0) 2023.07.05
일괄 처리(Batch processing) & 스트림 처리(Stream processing)  (0) 2023.06.23

댓글