이번 포스팅에서는 여러가지 airflow에서의 오퍼레이터로 뭐가 있는지 다양하게 살펴보겠습니다.
1. 기본 오퍼레이터
: Airflow에서 기본적으로 제공해주는 오퍼레이터를 한 번 살펴보도록 하겠습니다.
파일 경로 | 오퍼레이터(클래스) | 중요도 | 비고 |
airflow.models.baseoperator | BaseOperator | ⭐⭐⭐ | - 오펄레이터를 직접 개발하고 싶은 경우, 이 클래스 상속하여 개발 (execute() 함수를 오버라이딩 하여 사용합니다.) - 아래 오퍼레이터들은 모두 이 클래스를 상속하여 개발되어 있습니다. - Airflow를 잘 쓰려면, 이 오퍼레이터 상속/개발하는 것을 자유자재로 할 줄 알아야 합니다. |
airflow.operators.bash | BashOperator | ⭐⭐⭐ | - bash쉘 스크립트를 실행 - 가장 많이 사용하는 오퍼레이터 중 하나입니다. |
airflow.operators.branch | BaseBranchOperator | ⭐⭐ | - 직접 사용할 수는 없음. - 이 클래스를 상속하여 choose_branch함수를 구현해야 합니다.(그냥 사용시 에러가 발생) - 그러나, 이 클래스를 상속해서 사용하는 것보다 @task.branch 데코레이터 사용을 권장합니다. |
airflow.operators.datetime | BranchDateTimeOperator | - 특장 Datetime구간을 주어 Job날짜가 구간에 속하는지 여부에 따라 분기를 결정합니다. | |
airflow.operators.email | EmailOperator | - 이메일 전송하는 오퍼레이터(Airflow파라미터에 SMTP서버 등 사전 셋팅 필요) | |
airflow.operators.generic_transfer | GenericTransfer | - 데이터를 소스에서 타겟으로 전송(Airflow커넥션에 등록되어 있는 대상만 가능) | |
airflow.operators_latest_only | LatestOnlyOperator | - 이 Task 뒤에 연결되어 있는 task들을 모두 가장 최근의 Job만 실행하게끔 하는 오퍼레이터 |
파일 경로 | 오퍼레이터(클래스) | 중요도 | 비고 |
airflow.operators.subdag | SubDagOperator | - 일종의 task 그룹화, 해당 오퍼레이터 안에 다른 오퍼레이터를 둘 수 있습니다. (Taskgroup과 유사합니다, dag을 불러오는 것이 차이) | |
airflow.operators.trigger_dagrun | TriggerDagRunOperator | ⭐⭐ | - 다른 DAG을 수행하기 위한 오퍼레이터 |
airflow.operators.weekday | BranchDayOfWeekOperator | - 특정 요일에 따라 분기처리할 수 있는 오퍼레이터 | |
airflow.operators.python | PythonOperator | ⭐⭐⭐ | - 어떤 파이썬 함수를 실행시키기 위한 오퍼레이터 |
BranchPythonOperator | ⭐ | - 파이썬 함수 실행 결과에 따라 task를 선택적으로 실행시킬 때 사용되는 오퍼레이터 | |
ShortCircuitOperator | - 파이썬 함수 return 값이 False면 후행 Task를 Skip처리하고, dag을 종료시키는 오퍼레이터 | ||
PythonVirtualenvOperator | - 파이썬 가상환경 생성 후 Job 수행하고 마무리되면 가상환경을 삭제해주는 오퍼레이터 | ||
ExternalPythonOperator | - 기존에 존재하는 파이썬 가상환경에서 Job 수행하게 하는 오퍼레이터 |
공식문서를 살펴보면, 더 다양한 operators들이 있습니다. 들어가시면, 각 operator에 어떤 파라미터가 있고 어떤 것을 지원하는지 잘 알 수 있을 것입니다.
2. Provider 오퍼레이터
: Solution제공 업체에서 solution들을 다루기 위해 나온 오퍼레이터도 있습니다. (ex. AWS, GCP)
먼저, Provider에서 제공해주는 solution들을 다루기 위한 오퍼레이터는 Airflow UI 화면을 띄운다음에, Admin 탭에 Providers 탭에 가면 자세히 볼 수 있습니다.
정말 많은 solution 업체들이 있는데요, microsoft azure에서 다루는 솔루션들, mysql, postgres 와 같은 DB들 아니면, redis와 같은 인메모리 서비스들도 다룰 수 있게 해주고 있습니다.
예를 들어 amazon탭에 들어가보겠습니다.
그 중에서 PythonAPI를 봐볼까요?
그러면, 아마존 클라우드에서 제공해주는 많은 서비스들을 연동할 수 있는 hook이라는 것을 제공하는 것을 볼 수 있습니다.
그리고, 아래와 같이 operator도 제공해주고 있습니다. 이런 서비스를 이용해서 특정 기능을 할 수 있는 오퍼레이터(설계도)를 제공할 수 있습니다.
또, sensor라는 것도 있는데, 특정 조건이 만족이 되는지 안 되는지 지속적으로 감시할 수 있는 방법으로 여러 종류가 있습니다.
airflow와 궁합이 잘 맞는 google cloud platform 을 살펴볼까요? 에어플로우는 gcp와 연동되는 기능이 굉장히 많습니다.
여기도 마찬가지로 hooks 이라는 것이 존재합니다.
오퍼레이터, 센서도 다 있고, 데이터를 옮겨줄 수 있는 transfer도 있습니다.
마지막으로 http 탭을 한 번 보도록 하겠습니다.
http에 operators에 들어가보면, 아래와 같이 "SimpleHttpOperator" 라는 클래스가 있습니다.
다음 실습에서, 이 "SimpleHttpOperator" 오퍼레이터를 써보도록 하겠습니다.
사용자가 요청할 HttpUrl 과 HttpMethod (GET, POST) 를 명시해서 API 값을 얻어올 수 있는 그런 기능이라고 보시면 됩니다.
'컴퓨터 공부 > 💿 Airflow' 카테고리의 다른 글
[Airflow] 서울시 공공데이터 API 키 발급받기 (0) | 2023.09.30 |
---|---|
[Airflow] Trigger Run 오퍼레이터 (0) | 2023.08.31 |
[Airflow] Edge Label (0) | 2023.08.30 |
[Airflow] Task Group (2) | 2023.08.30 |
[Airflow] Trigger Rule (0) | 2023.08.30 |