일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- PYTHON
- dockerfile
- 데이터 웨어하우스
- 정리
- 컴퓨터 네트워크
- http
- 데이터엔지니어링
- Django
- 데이터 파이프라인
- TCP
- redshift
- TIL
- AWS
- airflow
- 파이썬
- airflow.cfg
- 자료구조
- 가상환경
- 데이터베이스
- 컴퓨터네트워크
- 데이터 엔지니어링
- sql
- 종류
- Docker
- 데브코스
- HADOOP
- Go
- S3
- linux
- 운영체제
- Today
- Total
목록Data Engineering/Airflow (18)
홍카나의 공부방

airflow.cfg에는 타임존 관련 키가 2개 존재한다. 하나는 default_timezone이고, 다른 하나는 default_ui_timezone이다. 이 키를 변경하면 한국시간 KST인 UTC+09:00에 시간을 맞출 수 있게 된다. DAG의 start_date, end_date, schedule 변수에 적힌 시간은 default_timezone에 지정된 타임존을 따른다. 그러나 DAG가 실행되는 execution_date와 기록되는 log time은 항상 UTC를 따른다. 즉, execution_date를 사용할때는 UTC와 KST를 고려하여 시간을 변환하며 이해해야 할 필요가 있다는 것이다. 현재로서는 UTC를 일관되게 사용하여 혼란을 덜어주는 것이 좋다고 판단된다.

Airflow 실습을 하다가 task 하나가 실패해서 원인을 찾고자 했다. 1. DAG의 Python 코드를 다시 살펴본다. -> 눈으로 봤을땐 딱히 잘못된 부분이 없어보여서 넘어갔다. 2. airflow CLI를 통해 여러 test를 해본다. airflow dags test {DAG이름} {EXECUTATION_DATE} airflow tasks test {DAG이름} {task이름} {EXECUTAION_DATE} 위 코드로 특정 DAG나 task를 test할 수 있는데, 이 테스트로 딱히 찾지 못했다. 3. 웹 UI 에서 실패한 log를 살펴본다. 이런 식으로 task 정보를 살펴보면 Logs 탭에 로그 기록이 남는다. 나의 경우 SQL INSERT 문에서 작은 따옴표를 작성할 때, INPUT 값에..

airflow를 설치할 때 Airflow.cfg도 함께 제공된다. 이 파일로 airflow의 동작, 설정, 옵션을 수정할 수 있는데 파일 안에 뭐가 있는지 알아야 맛보고 즐길 수 있을 것이다. airflow.cfg 내부의 일부분을 살펴본다. docker를 사용하고 있다면, airflow-webserver 컨테이너 내부의 airflow.cfg를 살펴보면 되겠다. (이 글은 airflow 2.5.1 버전을 기준으로 작성되었다.) 1. DAGs 폴더는 어디에 지정되는가? dags_folder 변수에 절대 경로로 DAG들이 저장되는 폴더를 지정할 수 있다. 보통 코드 레파지토리의 하위폴더 경로로 설정한다고 한다. 기본 값은 /opt/airflow/dags 일 것이다. 2. DAGs 폴더에 새로운 Dag를 만들면..

Docker에 설치되어 있는 Airflow에 로그인하는 방법을 살펴본다. 전제가 Docker 기반 Airflow임에 유의한다. EC2에 설치된 Airflow나 MMWA의 방법과는 다를 수 있다. 정확하게는 Airflow Scheduler 안으로 로그인하는 과정이다. docker ps 먼저 docker ps라는 명령어를 써서 컨테이너들의 아이디를 알아낸다. 저 중에 scheduler에 로그인을 해야 하고, 컨테이너 아이디는 4c51416a7578이다. docker exec -it 4c51416a7578 sh 위 아이디를 복붙하고, 컨테이너에 로그인을 하기 위해 위 명령코드를 작성해준다. 이렇게 하면 에어플로우 스케쥴러 컨테이너로 접속할 수 있을 것이다. 만약 특정 DAG의 task를 실행시키고 싶다면 다음..