Deliverable: stream_job.py + produce.py + MINI_EVIDENCE.md with identical pre/post-restart counts.
1. Setup
Redpanda in Docker (see streaming guide), topic shop-clicks with 3 partitions.
2. Requirements
produce.pyemits exactly 1,000 JSON click events (user_id, ts, page).stream_job.pyreads via Kafka connector, parses JSON, dedups on(user_id, ts), writesappendto a Delta sink with a checkpoint dir.- Start stream -> produce 500 -> kill -9 the stream -> restart same checkpoint -> produce 500 -> stop gracefully.
MINI_EVIDENCE.mdshows: sink count == 1000, no duplicates on(user_id, ts), and the batch ids proving replay resumed (not restarted).- One paragraph: what would change with
startingOffsets=lateston restart, and whyfailOnDataLoss=falseis dev-only.
3. Grading rubric (100 pts)
- Exactly-once proof (40): count 1000, zero dup keys after kill/restart.
- Checkpoint discipline (25): same checkpoint path reused; explanation correct.
- Code quality (20): backpressure option set, graceful vs kill path documented.
- Write-up (15): latest-vs-earliest paragraph correct.
4. Stretch
Add a 5-minute tumbling-window aggregation with a 10-minute watermark and show one late event being handled.