Spark Structed Streaming 이란
Stream Processing?
- 이전의 챕터까지는 Batch Processing에 대해 다룸.
- Batch Processing은 고정된 (큰) Dataset에 대해 한 번 연산을 하는 거 였다면, Stream Processing은 끝 없이 들어오는 데이터의 흐름을 연속적, 준 실시간으로 처리하는 것.
- IOT 센서, 웹 사이트/앱 과의 상호 작용, 신용 카드 트랜잭션, 실시간 대시 보드, 온라인 머신 러닝 등 다양한 분야에서 사용.
- Batch Processing과 같이 사용하여, 서로의 약점을 보완하고 강점을 취하는 방식으로도 많이 사용. (lambda 아키텍처)
관련 추천 도서 : https://product.kyobobook.co.kr/detail/S000000833139
Stream Processing 방법
- 크게 두 가지 방법론이 존재.
- 레코드 단위 처리 모델 (record-at-a-time processing model)
- 마이크로 배치 스트림 처리 모델 (micro-batch stream processing model)
1. 레코드 단위 처리 모델 (record-at-a-time processing model)

- 각 노드는 지속적으로 한 번에 한 개의 레코드를 받게 됨.
- 그 레코드를 처리하여 생성된 다른 레코드는 그래프상의 다음 노드로 보냄.
- 장점 : 응답 시간(latency)이 매우 짧음.(ms 단위로도 가능)
- 단점 : 높은 처리량(throughput)을 달성하기 어렵고, 특정 노드에 장애 발생 시 복구가 어려움
2. 마이크로 배치 스트림 처리 모델 (micro-batch stream processing model)

- Spark Streaming 에서 기본적으로 취하는 방법.
- Stream processing을, 아주 작은 Batch Processing을 처리하는 방식으로 생각하는 것.
- 장점 : 높은 처리량