Databricks DBU cost control: the four levers that matter
A Databricks bill is two bills stacked: DBUs to Databricks and instances to your cloud provider. Controlling it means understanding which compute type you picked, because the DBU rate varies by more than 5x.
Quick answer
A Databricks bill has two halves: DBUs billed by Databricks and the underlying VMs billed by your cloud provider. DBU rates differ sharply by compute type: on AWS Premium, Jobs Compute is around $0.15 per DBU while All Purpose Compute is around $0.55 per DBU, so running scheduled work on an interactive cluster costs roughly 3.7x more for identical work. The four levers that move the bill are: move jobs off All Purpose Compute, use spot instances for workers, set aggressive auto termination, and enable Photon only where it actually pays for itself.
The most common Databricks cost mistake is not a sizing error, it is a compute type error. Teams develop a notebook on an interactive cluster, schedule it, and never notice that the scheduled run is still attached to that interactive cluster. The work is identical. The DBU rate is not. That single misconfiguration can be three quarters of a team's Databricks spend.
The two bills
Every cluster hour generates two charges. Databricks bills DBUs, a normalized unit of processing where each instance type has a DBU per hour rating. Your cloud provider bills the actual VMs, storage, and network. A cluster of 8 i3.xlarge workers plus a driver on AWS runs roughly 9 times $0.312 per hour, about $2.81 per hour in EC2, plus the DBU charge on top. Optimizing one half while ignoring the other is how teams end up confused about why the savings did not materialize.
Lever one: compute type
| Compute type | Approx. DBU rate (AWS Premium) | Use for |
|---|---|---|
| Jobs Compute | ~$0.15/DBU | Scheduled and triggered production jobs |
| Jobs Compute Photon | ~$0.30/DBU | Scan heavy SQL and ETL jobs |
| All Purpose Compute | ~$0.55/DBU | Interactive notebooks and development only |
| SQL Classic | ~$0.22/DBU | BI queries on customer managed compute |
| SQL Pro | ~$0.55/DBU | BI with advanced features |
| SQL Serverless | ~$0.70/DBU | Instant start BI, no VM charge from your cloud |
Rates vary by cloud, region, and tier, but the ratios are the point. A nightly pipeline consuming 40 DBUs per run, 30 runs a month, costs 1,200 DBUs. On Jobs Compute that is about $180. On All Purpose Compute it is about $660. Same Spark, same data, same result, $480 a month difference on one pipeline. Multiply by the number of scheduled jobs in a mature workspace and this lever alone often reclaims five figures a year.
Note also that SQL Serverless carries a higher DBU rate but no separate VM bill from your cloud provider, so comparing it against SQL Classic requires adding the EC2 or VM cost to the Classic side before deciding. For bursty BI with long idle gaps, Serverless frequently wins on total cost because you pay nothing between queries.
Lever two: spot instances for workers
Spark workers are the ideal spot workload: they are stateless, replaceable, and the framework already handles node loss. Spot pricing typically runs 60 to 80 percent below on demand, so a worker fleet costing $2.50 an hour on demand might cost $0.65 on spot. Keep the driver on demand, since losing the driver kills the job, and use a mixed fleet policy so the cluster falls back to on demand if spot capacity is unavailable. Note that spot savings apply only to the cloud provider half of the bill; the DBU rate does not change. For a typical cluster where VM cost and DBU cost are roughly comparable, spot on workers cuts about 30 to 35 percent off the total.
Lever three: auto termination and job clusters
An interactive cluster with 8 workers left alive overnight costs the VM charge plus the All Purpose DBU rate for every one of those hours. At roughly $2.81 in EC2 plus, say, 12 DBUs per hour at $0.55, that is about $9.40 an hour, $113 for a 12 hour overnight idle, and over $2,000 a month if it happens every weeknight. Set auto termination to 30 minutes for development clusters and 10 minutes for anything shared. Better still, use job clusters that are created for a run and torn down when it finishes, which removes idle time entirely and gets the cheaper Jobs Compute rate at the same time.
Lever four: Photon, selectively
Photon roughly doubles the DBU rate and typically delivers a 2x to 3x speedup on scan heavy SQL and Delta operations. If your job goes from 60 minutes to 25, you consumed fewer total DBUs at the higher rate and came out ahead while also finishing sooner. If it goes from 60 minutes to 50 because the workload is dominated by Python UDFs or small file overhead, you just paid about 1.7x for a modest gain. Benchmark it per job rather than enabling it globally, and remember that Photon does not accelerate arbitrary Python or Scala code.
The order to work in
| Action | Typical saving | Effort |
|---|---|---|
| Move scheduled work to Jobs Compute | Up to 70% on affected jobs | Low |
| Spot workers with on demand driver | 30 to 35% of total | Low |
| Auto termination at 10 to 30 minutes | Varies, often large | Trivial |
| Right size worker count and type | 10 to 30% | Medium |
| Photon where benchmarked | 10 to 40% on eligible jobs | Medium |
| File compaction and partition tuning | 10 to 50% on scan heavy jobs | High |
Work top down. The cloud provider half of the bill, the VMs, disks, NAT gateways, and cross zone traffic, is all Terraform managed, and C3X prices it from the resource catalog in the pull request. Pair that withjob cluster discipline for the DBU half.
FAQ
What is a DBU in Databricks?
A DBU is a Databricks Unit, a normalized measure of processing billed per hour of use. Each instance type carries a DBU per hour rating, and the dollar rate per DBU depends on the compute type and tier. DBUs are billed by Databricks and are entirely separate from the VM, storage, and network charges your cloud provider bills for the same cluster.
Why is All Purpose Compute so much more expensive?
All Purpose Compute runs around $0.55 per DBU on AWS Premium versus roughly $0.15 for Jobs Compute, about 3.7x more. It is priced for interactive, long lived, shared development clusters. Scheduled production work does not need those properties, so running a nightly pipeline on an interactive cluster typically wastes 70 percent of what that pipeline costs.
Do spot instances reduce DBU cost?
No. Spot pricing reduces only the cloud provider half of the bill, the VM charges, typically by 60 to 80 percent. The DBU rate is unchanged. For a cluster where VM and DBU costs are roughly comparable, moving workers to spot cuts about 30 to 35 percent off the total. Keep the driver on demand since losing it fails the job.
Is Photon worth the extra cost?
It depends on the job. Photon roughly doubles the DBU rate and typically delivers 2x to 3x speedups on scan heavy SQL and Delta operations, which nets out cheaper and faster. On workloads dominated by Python UDFs or small file overhead the speedup is modest and you pay more overall. Benchmark it per job instead of enabling it workspace wide.
How much does an idle Databricks cluster cost?
A cluster with 8 workers might cost around $2.81 an hour in EC2 plus roughly 12 DBUs an hour at the All Purpose rate, about $9.40 an hour total. Left running overnight for 12 hours that is about $113, and repeated every weeknight it exceeds $2,000 a month for compute doing absolutely nothing.
How does C3X help with Databricks cost?
C3X prices the Terraform managed cloud infrastructure underneath Databricks: the EC2 or VM instances, EBS volumes, S3 buckets, NAT gateways, and cross zone data paths. That half of the bill is often comparable to the DBU half, and C3X makes it visible in the pull request so cluster and network design changes are costed before they are merged.
What to do next
See the cloud half of your data platform bill before it lands. C3X prices your Terraform resources at review time. Start with the quickstart.
Share this post
Try C3X on your own Terraform
Free and open source. No API key required. One command to install, one command to estimate.