databricksdata-platformcost-optimizationspark

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.

The C3X Team··8 min read

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 typeApprox. DBU rate (AWS Premium)Use for
Jobs Compute~$0.15/DBUScheduled and triggered production jobs
Jobs Compute Photon~$0.30/DBUScan heavy SQL and ETL jobs
All Purpose Compute~$0.55/DBUInteractive notebooks and development only
SQL Classic~$0.22/DBUBI queries on customer managed compute
SQL Pro~$0.55/DBUBI with advanced features
SQL Serverless~$0.70/DBUInstant 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

ActionTypical savingEffort
Move scheduled work to Jobs ComputeUp to 70% on affected jobsLow
Spot workers with on demand driver30 to 35% of totalLow
Auto termination at 10 to 30 minutesVaries, often largeTrivial
Right size worker count and type10 to 30%Medium
Photon where benchmarked10 to 40% on eligible jobsMedium
File compaction and partition tuning10 to 50% on scan heavy jobsHigh

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.

Try C3X on your own Terraform

Free and open source. No API key required. One command to install, one command to estimate.