15분
긴급 요청: 실시간으로 데이터 처리해줘
Structured Streaming: 배치처럼 쓰는 스트리밍
긴급 요청: 실시간으로 데이터 처리해줘
Spark 심화: Streaming & Delta Lake > Structured Streaming: 배치처럼 쓰는 스트리밍
학습 목표
실시간 데이터 처리가 필요한 비즈니스 상황을 이해한다 Structured Streaming의 필요성을 파악한다
"배치 처리로는 이제 안 돼요"
팀장: "이커머스팀에서 급하게 연락 왔어. 주문 사기 탐지가 1시간 뒤에야 된다고 난리야."
평소처럼 Spark 배치 잡을 돌리고 있었다. 1시간마다 주문 데이터를 가져와서 분석하는 파이프라인. 잘 돌아가고 있었는데... 뭐가 문제지?
"사기범이 1시간 동안 20건을 결제하고 사라졌대. 탐지됐을 땐 이미 늦었어."
아...
왜 배치로는 안 될까?
배치 처리의 한계:
에디터 로딩 중...
실시간 처리가 필요한 상황:
- 사기 탐지: 이상 거래 즉시 차단
- 재고 관리: 품절 전에 알림
- 실시간 대시보드: 경영진 의사결정
- IoT 센서: 장비 이상 즉시 감지
"그럼 Kafka Consumer 직접 짜야 해요?"
처음에 그렇게 생각했다.
에디터 로딩 중...
문제점:
- 체크포인트? 직접 구현해야 함
- 장애 복구? 직접 구현해야 함
- 윈도우 집계? 직접 구현해야 함
- 상태 관리? 직접 구현해야 함
"그거 다 Spark가 해줄 수 있어."
그때 처음 들었다. Structured Streaming.
Structured Streaming: 배치처럼 쓰는 스트리밍
Spark 팀의 철학:
"스트리밍도 배치와 같은 API로 처리하면 되지 않을까?"
에디터 로딩 중...
read → readStream write → writeStream
이게 전부다.
이번 Day에서 배울 것
- Structured Streaming 개념: 마이크로 배치가 뭔지
- Watermark와 Window: 늦은 데이터 어떻게 처리하는지
- 실습: Rate Source로 스트리밍 테스트
- Kafka 연동: 실무에서 가장 많이 쓰는 조합
시작하자.