20분
늦게 도착한 데이터, 어떻게 처리할까?
Structured Streaming: 배치처럼 쓰는 스트리밍
늦게 도착한 데이터, 어떻게 처리할까?
Spark 심화: Streaming & Delta Lake > Structured Streaming: 배치처럼 쓰는 스트리밍
학습 목표
Event Time과 Processing Time의 차이를 이해한다 Watermark의 역할과 설정 방법을 안다 Tumbling Window와 Sliding Window를 구분한다
문제: 늦게 도착하는 데이터
"10:00에 발생한 주문이 10:05에야 도착했어요. 어떻게 처리해요?"
에디터 로딩 중...
왜 늦을까?
- 네트워크 지연
- 서버 간 시차
- 클라이언트 오프라인 후 재연결
- 카프카 파티션 불균형
Watermark: "이 시간까지는 기다린다"
Watermark = 늦은 데이터를 허용하는 임계값
에디터 로딩 중...
동작 방식:
에디터 로딩 중...
실무 가이드라인:
| 상황 | Watermark 설정 |
|---|---|
| 네트워크 안정 | 1-5분 |
| IoT/모바일 | 10-30분 |
| 일 배치 대체 | 1-2시간 |
Window 집계: 시간 단위로 묶기
Tumbling Window (고정 윈도우)
윈도우가 겹치지 않음. 가장 많이 쓰임.
에디터 로딩 중...
에디터 로딩 중...
Sliding Window (슬라이딩 윈도우)
윈도우가 겹침. 이동 평균 같은 분석에 사용.
에디터 로딩 중...
에디터 로딩 중...
Watermark + Window 조합
에디터 로딩 중...
흔한 실수
| 실수 | 문제 | 해결 |
|---|---|---|
| Watermark 없이 집계 | 상태가 무한히 커짐 | 반드시 Watermark 설정 |
| Watermark 너무 큼 | 메모리 부족 | 비즈니스 요구사항에 맞게 |
| Append + 집계 | 윈도우 안 닫힘 | Update 또는 Complete 사용 |