일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- http
- 데이터 엔지니어링
- 컴퓨터 네트워크
- airflow
- redshift
- airflow.cfg
- 운영체제
- 데이터베이스
- AWS
- 가상환경
- Docker
- TCP
- 데이터엔지니어링
- 자료구조
- 데브코스
- HADOOP
- sql
- PYTHON
- Go
- 데이터 파이프라인
- 데이터 웨어하우스
- linux
- 파이썬
- TIL
- dockerfile
- 컴퓨터네트워크
- 종류
- 정리
- Django
- S3
- Today
- Total
목록Data Engineering/Airflow (18)
홍카나의 공부방
airflow 2.4.0 버전 이후 airflow의 DummyOperator는 EmptyOperator로 대체되었습니다. from airflow.operators.empty import EmptyOperator EmptyOperator는 기존 팬아웃(Fan-Out) 방식의 DAG 구성 전략에 사용하던 DummyOperator랑 똑같이 사용하면 됩니다.
에어플로우 한글 책 p.12에서 Airflow의 스케쥴러가 DAG 내용을 파싱해서 task간 예약 주기(schedule interval), 의존성(dependency)을 체크한다는 내용이 나옵니다. 그런데 해당 페이지 중간 부분에 3. 예약된 각 태스크에 대해 스케줄러는 해당 태스크의 의존성(=업스트림 태스크)을 확인합니다. 의존성 태스크가 완료되지 않았다면 실행 대기열에 추가합니다. 이런 문장이 나와있습니다. 그런데 p.13에 나온 그림1.9랑 확인해보면 스케쥴러가 태스크 의존성이 모두 해결되었을 때 실행할 태스크를 대기열에 추가한다고 나와 있습니다. 앞뒤 내용이 다르죠. 어느 내용이 정확한지 결론부터 말씀드리면 후자(의존성이 모두 해결되었을 때 Execution Queue에 추가)가 맞습니다. (1)..
1. 컨테이너의 IP docker container들은 기본적으로 유동 IP를 가지고 있다. 즉, 컨테이너 재기동시 IP가 바뀔 수 있다는 것이다. 그래서 고정 IP를 할당하려면 networks 만들어서 할당해야 한다. Airflow를 구성할 때 postgresDB에 고정IP를 할당시켜서 DB에 접속하는 경우를 살펴보자. 먼저 airflow가 만드는 여러 기본적인 container들이 있는데 이 컨테이너들은 네트워크 지정이 되어있지 않다. 그러면 default network에 모두 소속된다. 그런데 docker에서 컨테이너 간의 네트워크가 다르면 통신할 수 없다! 따라서 동일 네트워크로 할당하는 과정이 필요하다. 2. docker-compose.yaml 파일 수정하기 docker-compose.yaml ..
plugins 폴더에 있는 외부 모듈에서 외부 라이브러리를 import하는데 airflow에서 이를 찾을 수 없다는 오류 메시지가 나왔다. 분명 로컬 파이썬 가상환경에서 해당 라이브러리를 pip install로 설치했는데도 불구하고 인식못하는 것이다. 1. 문제 원인 > 처음 Airflow를 설치할 때 Airflow를 실행할 파이썬 환경에 해당 라이브러리가 같이 설치되지 않았다. Numpy나 Pandas와 같은 대중적인 라이브러리의 경우, Airflow 공식 이미지로 컨테이너를 설치할 때 기본적으로 같이 설치되지만 특정한 라이브러리는 그렇지 않다. 로컬에서 .env로 PYTHONPATH를 맞춰주는 등 로컬단에서의 해결 방법을 다 시도해봤는데 여전히 no module 문제가 발생한다면 Airflow의 파이..