24일차: Spark Structured Streaming
Source: Dev.to

Introduction
Spark 마스터리 시리즈의 Day 24에 오신 것을 환영합니다.
오늘은 Spark Structured Streaming을 사용한 실시간 데이터 파이프라인의 세계에 들어갑니다.
이미 Spark 배치를 알고 있다면 좋은 소식입니다:
스트리밍의 70 %를 이미 알고 있습니다.
왜 그런지 알아봅시다.
Structured Streaming = Continuous Batch
Spark은 이벤트를 하나씩 처리하지 않습니다. 작은 배치를 반복해서 처리하며, 이를 통해 다음을 제공합니다:
- 장애 복구
- 정확히 한 번(Exactly‑once) 보장
- 높은 처리량
Why Structured Streaming Is Powerful
이전 Spark Streaming(DStreams)과 달리 Structured Streaming은:
- DataFrame 사용
- Catalyst 옵티마이저 활용
- SQL 지원
또한 Delta Lake와 통합되어 프로덕션에 바로 사용할 수 있습니다.
Sources & Sinks
전형적인 실무 흐름:
Kafka → Spark → Delta → BI / ML
파일 스트림은 다음과 같은 경우에 유용합니다:
- IoT 배치 파일 드롭
- 랜딩 존
- 테스트
Output Modes Explained Simply
- Append – 새로운 행만 추가
- Update – 변경된 행만 업데이트
- Complete – 매번 전체 테이블 출력
대부분의 프로덕션 파이프라인은 append 또는 update 모드를 사용합니다.
Checkpointing = Safety Net
체크포인팅은 진행 상황을 저장하여 Spark이 다음을 할 수 있게 합니다:
- 장애 후 재시작
- 중복 방지
- 상태 유지
체크포인팅이 없으면 파이프라인이 깨집니다.
First Pipeline Mindset
스트리밍을 무한한 DataFrame으로 생각하고 몇 초마다 처리합니다. 배치와 동일한 규칙이 적용됩니다:
- 일찍 필터링
- 셔플 최소화
- UDF 사용 지양
- 성능 모니터링
Summary
다룬 내용:
- Structured Streaming이 무엇인지
- 배치와 스트리밍 모델 차이
- 소스와 싱크
- 출력 모드
- 트리거
- 체크포인팅
- 첫 스트리밍 파이프라인 구축
더 많은 콘텐츠를 원하시면 팔로우해 주세요. 놓친 부분이 있으면 알려 주세요. 감사합니다.