Start here
A job that works once in a notebook is not a production job. A production job runs every day, fails safely, and does not waste money.
You already know the tools. This chapter shows how to use them together, as one habit, before a job ships.
Here is where each earlier idea comes back.
| Earlier chapter | It comes back as |
|---|---|
| Idempotency, Retries & Exactly-Once | Safe reruns: a rerun gives the same result |
| Reliability, Failure & Recovery | Recovery: know what fails and who restarts it |
| Delta Lake & the Lakehouse | MERGE: a rerun updates rows, it does not copy them |
| Structured Streaming Fundamentals | Checkpoints: a stream restarts where it stopped |
| Data Observability & Monitoring | Checks that fail loudly on bad data |
| Spark Configurations | Right-sized executors and dynamic allocation |
| Reading & Writing Data: Sources & File Formats | Read less data, in files of a good size |
| Performance Tuning & Debugging with the Spark UI | How you see each problem in this chapter |
The chapter has four parts: safe reruns, what Spark retries, cost, and anti-patterns.
An anti-pattern is a habit that looks fine on small data and fails on big data. Each one here has a symptom, a cause and a fix.
