Airflow 4

Airflow Trigger 스케줄링

그동안 Airflow를 이용하여 DAG를 작성하면서 불편함을 느낀점이 하나 있었다. 바로 Time 스케줄에 관한 것인데 지금 토이프로젝트에서 사용하는 데이터의 구조상 반드시 선행되어야하는 DAG가 존재했고 예를들면 일자별 Data 크롤링 등등 선행 DAG가 작동한 이후에 신규 선수 추출과 선수의 생년월일 크롤링 DAG가 작동해야했다. 지금까지는 눈대중으로 Time 스케줄을 잡았었지만 비효율적인 부분이 몇개 있었다. 1. 시간적 손실 현재 매일 동작하는 daily DAG는 20시 45분에 작동을 시작하고 소요시간은 대략 3분 정도이다. 넉넉잡아서 5분의 여유를 두고 다음 DAG의 작동시간은 20시 50분으로 잡으면 크게 문제는 없을 것 처럼 보이나, 크롤링 사이트의 변화나 time 딜레이가 있을 경우 5분..

Airflow 2023.07.27

주별 집계 데이터 적재 DAG 만들기

이번 포스팅은 매주 월요일마다 지난주의 일별 데이터를 집계하여 DB에 저장하는 DAG를 만드는 과정에 대해 작성해보려고한다. 지난 포스팅에서 만들었던 로직을 그대로 DAG에 옮기는 거라서 큰 어려움은 없을듯하다. 일자별 데이터를 주별 데이터로 변환하기 이번 포스팅은 일자별로 적재된 타자, 투수 데이터를 주별 최우수 선수를 가려내기 위한 주별 데이터로 변환해보려고한다. 주별 집계를 하기전 필요한 지표부터 추려봤다. 타자의 경우는 타석, developer-trainee-j.tistory.com 이번 DAG는 일배치 DAG와 마찬가지로 하나의 PythonOperator를 사용할 것이고, 모든 주차 집계가 아니라 지난주 데이터만 집계를 해야하기 때문에 약간의 쿼리 수정이 있다. # # 필요 모듈 import f..

Airflow 2023.06.19

Airflow와 DB 연결하기

이번 포스팅은 Airflow DAG에서 MariaDB를 연결하여 DB에 있는 데이터들을 출력해보려 한다. Airflow 자체 기능으로 Connection 메뉴가 있지만 그냥 파이썬 코드에서 DB를 연결시켜보려한다. 우선 DB를 설치해야했는데 Docker위에 MariaDB 컨테이너를 생성하기와 그냥 로컬환경에 DB 설치하기 두가지 방식이 있었다. 처음에는 Docker위에 컨테이너를 올리는 방식으로 하려고 했는데 외부접속 세팅이나 Docker 네트워크 세팅을 하는 것 보다 그냥 로컬에 설치하는게 더 빠를 것 같아서 로컬에 설치했다. 그 다음 연결에 필요한 모듈을 불러온다. import pymysql 이제 pymysql 커넥션을 만들면되는데 한가지 문제가 생겼다. conn = pymysql.connect(ho..

Airflow 2023.04.17

Airflow Sample DAG 생성하기

이번 포스팅은 지난 포스팅에서 띄운 Airflow에 Hello World를 출력하는 sample DAG를 생성해보려고 한다. Airflow DAG는 파이썬 기반으로 작성되기 때문에 기존에 파이썬을 사용하는 사람이라면 큰 어려움은 없을 것 같다. 일단 docker-compose.yaml로 Airflow를 띄우게 되면 자동적으로 dags, logs, plugins 폴더가 생성된다. dags 폴더 Airflow에서 실행될 파이썬 파일들이 담겨있어야하는 공간이다. Airflow는 주기적으로 dags를 폴더를 스캔하며 해당 폴더에 있는 DAG를 읽어 Web UI에 표시한다. dags폴더의 경로는 고정이 아닌 수정이 가능하며 수정은 docker-compose.yaml 상단에 있는 volumes에서 가능하다 . lo..

Airflow 2023.04.14