Spark Streaming을 Spark Operator로 장기 실행시키고, 배치는 spark-submit로 On-Demand 실행한다.
| 구분 | spark-submit | Spark Streaming |
|---|---|---|
| 실행 형태 | 배치(단발성) 또는 장시간 실행 모두 가능 | 장시간 실행(Streaming 전용) |
| 작업 종료 시점 | 작업 완료 후 자동 종료 (배치) 또는 무한 루프 처리 가능 | 기본적으로 무한 루프, 명시적으로 종료해야 함 |
| 데이터 처리 방식 | 고정된 입력 데이터(파일, DB, S3 등)를 한 번에 처리 | 끊임없이 들어오는 데이터(Kafka, Socket 등)를 마이크로 배치/Continuous 모드로 처리 |
| 제출 방법 | spark-submit CLI로 JAR/Py 파일 실행 | spark-submit으로 실행은 동일하지만 코드 내부에서 스트리밍 API 사용 |
| 주요 API | DataFrame API, RDD API, SQL API | Structured Streaming API (readStream, writeStream) |
| 실패 복구 | 재실행 시 처음부터 처리 | 체크포인트 기반으로 마지막 오프셋부터 복구 |
| 종료 조건 | 배치 완료 / 코드에서 명시적 종료 | 수동 종료 또는 외부 시그널 |
| 사용 사례 | - 대용량 파일 변환 |