The units differ, so compare them on one workload: a BookNest-sized nightly batch job using 16 vCPUs and 64 GB for 30 minutes, 30 times a month. The arithmetic below uses only the published list rates above and leaves out storage, networking and discounts.

| Platform | Billing unit | Per run | Per month |
|---|---|---|---|
| EMR Serverless | vCPU-hour + GB-hour | $0.61 | $18.18 |
| Managed Service for Apache Spark, serverless standard | DCU-hour (16 DCUs) | $0.48 | $14.40 |
| Fabric on-demand Spark | 0.5 CU per vCore-hour | $0.72 | $21.60 |
| Synapse Spark pool | vCore-hour | $1.10 | $33.12 |
| Databricks 2,717 Jobs | DBUs (from $0.15) plus VMs | depends on instance DBU rate | |
| EMR on EC2 24 or managed clusters | instance-hours plus uplift | VM price plus $0.048 per m5.xlarge-hour |
For short, scheduled jobs the serverless models are cheap and simple, because you pay only while the job runs; the per-run prices differ less than the operational models do. Clusters and provisioned capacity win when work runs most of the day, when you need custom images or libraries, or when committed-use discounts apply. In every case, the biggest saving comes from Partitioning and Caching to Tuning and Memory: a job tuned to run in half the time costs half as much.