들어가며이전 단계까지 Producer가 Kafka로 이벤트를 보내는 것을 확인했다.하지만 Kafka는 버퍼일 뿐이라, retension이 지나면 메시지가 사라진다. 데이터를 가지고 분석을 하려면 Kafka의 이벤트를 어딘가에 영구 저장해야 한다. 이번 포스팅은 그 첫 영구 저장 계층인 Bronze 레이어를 만든 과정이다.Producer → Kafka → 현재 단계: [Bronze] → Silver → GoldBronze의 원칙은 단 하나 - raw 그대로 저장.변환-정제는 다음 계층(silver)의 몫이다.1. 핵심 결정 ① - 컨슈머를 어디서 돌릴 것인가처음엔 막연히 AWS Glue Streaming으로 적재하면 될거라고 생각했다.다만 근본적인 문제에 부딪혔다.클라우드의 Glue는 내 맥북의 `loca..
내가 헷갈린 지점프로젝트에서 Kafka 메시지를 S3에 적재하는 단계를 설계하면서 이런 생각이 들었다."Kafka → S3 적재에 Spark Structured Streaming을 쓰려고 했는데 왜 AI는 Glue Streaming Job을 쓰라고하지?" Glue라는 이름만 보고 Spark와 관계없는 별도 기술처럼 보였고, 둘이 다른 기술이라고 착각했다.결론부터 말하면 Glue Structured Streaming Job은 Spark Structured Streaming 위에서 동작한다.대립 관계가 아니라 포함 관계다.Spark Structured Streaming이란Apache Spark의 스트리밍 처리 API다.Kafka 같은 메시지 큐에서 데이터를 읽어 실시간으로 처리하고 저장하는 코드를 작성하는 ..
원천 데이터 구성원천 데이터는 두 가지다.소스역할Criteo Attribution DatasetHuggingFace 제공, 약 1,650만 건의 클릭 데이터. 실시간처럼 재생한다.더미 이벤트 생성기Python 스크립트로 OpenRTB 형식의 이벤트를 합성 생성. 파이프라인의 주요 볼륨 소스.웹 이벤트는 처음에 후보로 올랐지만 제거했다.실제 유저가 클릭해야 이벤트가 발생하기 때문에 대용량 파이프라인 검증에 적합하지 않다.파일 구성producers/├── common/│ ├── init.py # Python 패키지 인식용 (이 파일이 없으면 import 불가)│ └── schema.py # 공통 이벤트 스키마 (두 Producer가 공유)├── config.py # 모든 설정값 중앙 관리├── dummy_g..
프로젝트 개요데이터 엔지니어링 최종 프로젝트로 광고 이벤트 레이크하우스를 구축한다.광고 도메인을 선택한 이유는 데이터 특성이 명확하기 때문이다. (보충 추가 예정)이벤트가 퍼널 구조(request → impression → click → conversion)로 흐른다실시간성이 중요하다 (클릭 직후 전환 여부 추적)집계 단위가 다양하다 (캠페인별, 배너별, 디바이스별, 시간별)이 세 가지 특성이 있으면 파이프라인의 모든 계층(수집 → 저장 → 처리 → 집계)을 의미 있게 설계할 수 있다.전체 아키텍처(수정 될 수 있음)[원천 데이터]Criteo Attribution Dataset (16.5M건)더미 이벤트 생성기 (Python 스크립트)↓ JSON┌─────────────────────┐│ Apache K..
1. DataFrameDistributed collection of data organized into named columns데이터에 인터페이스가 생겼다는 의미- RDD: ['Kim', 28], ['Lee', 32] 이걸 Spark는 이름인지 나이인지 모른다. (TS 기준으로 any[])- DataFrame: name: 'Kim', age: 28 처럼 컬럼 이름과 타입이 정해짐 (TS 기준으로 Uset[]) Spark 데이터 처리 속도 증가를 위해 등장 (텅스텐 프로젝트)schema 존재쿼리 최적화 (catalyst optimizer)코드를 비효율적으로 짜도(예: 전체를 다 가져와서 필터링), Spark 엔진이 "아, 이 코드는 먼저 필터링하고 필요한 컬럼만 가져오는 게 빠르겠네?"라고 실행 계획을 스..
Spark의 데이터 모델에 대해 학습하고,각 모델에서는 어떤 API를 활용할 수 있는지 학습해보자.1. Spark Data ModelsData Model(데이터 모델)?복잡한 물리적 데이터(디스크에 저장된 바이트 단위의 조각들)를 개발자가 코드 수준에서 어떻게 바라볼지 결정하는 추상화 단계Spark에서의 데이터 모델수만 대의 서버에 흩어진 데이터 조각들을 "하나의 리스트(RDD)"로 볼 것인지, 아니면 "하나의 표(DataFrame)"로 볼 것인지를 결정하는 규칙이다.Spark의 대표적인 DataModel 세 가지RDD: 가장 로우 레벨의 데이터에 사용함DataFrame: 스키마 있는 데이터에 사용함Dataset: 데이터의 타입이 정해져 있는 정적인 타입인 경우 사용함2. RDD2-1. RDD 란?Res..
데이터 엔지니어링의 'Hello World'라고 불리는 Word Count(단어 개수 세기) 실습을 통해 Spark 애플리케이션이 어떻게 구성되고 동작하는지 알아보자.단순히코드를 짜는 것이 아니라, 수만 대의 서버에서 데이터가 어떻게 움직이는지 상상하며 작업하는것이 도움이 된다고 한다.1. Spark 애플리케이션의 핵심 객체Spark와 대화하기 위해서는 '통로'가 필요하다. 그 통로 역할을 하는 것이 바로 아래 두 객체다. 1. Spark Context 역할: Spark 클러스터와의 연결을 담당하는 가장 기본적인 객체다. (Initialize Environment)코드 설명SparkConf()를 통해서 Spark Configuration 을 해준다. (초기 세팅 작업).setAppName 을 통해 앱 애..
원래는 Databricks 에서 Community Edition으로 노트북 환경 실습이 가능했지만,Community Edition 에서 Free Edition으로 전환되어서 실습이 제한되었다.따라서 For Work(업무용) 환경으로 대체해서 (AWS 연동)DBU(Databricks Unit) + AWS 인스턴스 비용 형식으로 실습을 진행할거고사용량 기준으로 과금이 될 수 있다.PC방으로 비유하자면,컴퓨터 이용로(AWS) 와 유료 게임 접속료(DBU)를 동시에 내는것과 같다.실습 진행하면서 틈틈히 과금을 확인하면서 진행해야할것 같다.1. Databricks 란?Spark를 기업 환경에 맞게 만든 확장-운영 가능한 플랫폼 Databricks는 "Apache Spark 기반의 클라우드 데이터 플랫폼" 이다.대..
- Total
- Today
- Yesterday
- airflow
- DAG
- elasticip
- Backfill
- DataSet
- lakehouse
- Glue
- Data engineering
- de
- spark
- Unity Catalog
- Data Pipeline
- Daynamic Task
- Consumer DAG
- catchup
- AWS
- Data Dngineering
- iceberg
- RDD
- lake house
- s3
- Glue ETL
- kafka
- 데이터파이프라인
- Spark structured streaming
- Data Engineerring
- Databricks
- docker
- Prodcuder DAG
- AWS Glue Catalog
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
