일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 데이터 웨어하우스
- Data Warehouse
- Parquet
- spark streaming
- 델타레이크
- delta lake
- 스파크
- 에어플로우
- Data Engineer
- 카프카
- 레드시프트
- MySQL
- Zookeeper
- kafka rest api
- docker
- 데이터
- 컬럼 기반
- s3
- 데이터 엔지니어링
- 데이터 엔지니어
- kafka
- airflow
- AWS
- 스파크 스트리밍
- spark
- 대용량 처리
- Data engineering
- Schema Registry
- 카프카 구축
- Redshift
- Today
- Total
목록전체 글 (62)
데이터 엔지니어 기술 블로그
키가 존재하면 업데이트하고, 존재하지 않으면 삽입하는 동작이 필요했다. 하지만 대용량의 요청을 보내면서 무리를 덜 줄 방법을 생각하다가 스택오버플로우에 물어봤는데 금방 답변을 해주었다. 질문했던 내용을 자세히 보려면 이 링크를 참조하면 된다. 기존의 방식 1. 1번 키에 prop_a, prop_b에 데이터 삽입 INSERT INTO example_table (id, prop_a, prop_b) VALUES (1,1,7) ON DUPLICATE KEY UPDATE prop_a=1,prop_b=7; ------------------------------------------------------------- id(primary key), prop_a, prop_b, prop_c 1 1 7 0 --------..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cEtYHq/btq7NzPnbAO/zMlKvXasG8648qMuYjlZYk/img.png)
개요 Task는 에어플로우의 기본 실행 단위이다. Task에는 세가지 종류가 있다. 1. Operator: Bash, Python 등과 연결되어 있는 미리 정의된 작업 템플릿 2. Sensor: 외부 이벤트를 기다리는 연산자의 하위 클래스 3. TaskFlow: @task 데코레이터를 사용하여 패키지와 할 수 있는 기능(Airflow 2.0.0 신규 기능) 기본 개념 관계 작업간의 종속성을 설정하기 위해서 upstream, downstream을 사용할 수 있다. 연산자를 사용하여 종속성을 설정할 수 있다. a_task >> b_task >> [c_task, d_task] 작업은 기본적으로 자신의 정보를 전달하지 않으며 독립적으로 실행이 되지만, XCom을 사용하여 다른 태스크로 정보를 전달할 수 있다. ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bTO1eb/btq7I07bwan/kgXoohqGFFwJkLrJGENmL1/img.png)
개요 에어플로우에서는 execution date 라는 개념이 있다. 과거에 실행하지 못한 작업을 그 시간대에 맞춰서 실행할 때 유용하다. 하지만 사용하면서도 계속 헷갈리는데 이번에 정리해보려고 한다. Execution Date란? 통계청에서 Parameter로 가져오는 날짜를 지정해야 하는 API가 있다고 생각해본다. 이 API를 사용하여 데이터를 수집하는 스크립트를 만들었다. 크론탭으로 이 스크립트를 매일 아침에 실행하게 하였는데 만약 3일 전(2021-06-14) 통계청 서버의 오류로 데이터를 수집하지 못한 것을 알아챘다면 스크립트의 매개변수 중 날짜를 2021-06-14로 설정한 후 다시 실행시켜야 한다. Airflow에는 Execution Date라는 개념이 있어서 매일 데이터를 수집하도록(@da..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cRQVip/btq7iRqeV8M/6yItrraBQxKeZsJiivEZYk/img.png)
개요 Airflow는 복잡한 워크플로우를 프로그래밍 방식으로 작성해서, 스케줄링하고 모니터링할 수 있는 플랫폼이다. 데이터 파이프라인을 이루고 있는 ETL 스크립트들을 스케줄링 할 때 crontab, cloudwatch 등을 사용하는 곳이 많다. 그러나 스크립트들이 많아지고 서로에 대한 의존성이 생기게 되면 컨트롤하기 어렵고, 기존 작업이 실패했을 때 다시 스크립트를 실행하려면 로그를 확인하고 실행해야 하는 등의 문제점이 생긴다. 이러면 바로 복구할수도 없고, 어디서 잘못되었는지 확인하기도 어렵고, 의존성이 있는 스크립트가 잘못되었는데 그 다음 스크립트가 실행이 되버리는 등의 문제점이 발생할 수 있다. Airflow에는 서로에 대한 의존성을 표현할 수 있고, 스크립트가 실패했을 때 알람을 보내 확인하고 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bPEXoC/btq7deZwfpC/PDNFgKlgVFxWUIpdtFOYL1/img.png)
개요 에어플로우에서 작업이 실패했을 때 알 수 있는 방법은 Airflow 인터페이스 웹에 들어가서 확인을 하거나 email을 연동하거나 slack을 연동하는 등의 방법이 있다. 현재는 연동이 되어있지 않아서 작업에 실패하면 직접 들어가서 확인을 해야했는데, 이러면 알람이 늦어져서 조치가 어려워진다. 그래서 지금은 현재 사용하는 Slack과 연동을 해보려고 한다. - 이 문서에서 사용하는 에어플로우 버전은 2.0.0이다. Slack으로 메세지 보내는 방법 Airflow Operator 중에 slack으로 메세지를 보내주는 오퍼레이터가 있다. 자세한 내용은 이 링크를 참조하면 된다. 1. Airflow가 설치되어 있는 서버에서 apache-airflow-providers-slack 을 설치한다. python..