azurerm_synapse_spark_pool cost estimation
An Apache Spark pool in Synapse billed per vCore-hour of active nodes. Three Small nodes running full-time are ~$1,253/month — but auto-pause makes the real cost usage-driven.
An azurerm_synapse_spark_pool provisions Apache Spark compute inside Azure Synapse. Cost is per vCore-hour: node_count × the vCores per node (Small = 4, Medium = 8, Large = 16) × the hours the pool is active, at roughly $0.143/vCore-hour.
Three Small nodes active around the clock works out to 3 × 4 × 730 × $0.143 ≈ $1,253/month — but that 24/7 figure is the worst case, not the typical one. Spark pools support auto-pause: the pool spins down after an idle timeout and bills nothing while paused, spinning back up when a job arrives. For the bursty, job-based workloads Spark pools usually run, the real bill is a fraction of the always-on number.
So the cost levers are node size and count (capacity per job) and active hours (driven by auto-pause and how much work you run). Over-sizing nodes or disabling auto-pause are the two ways this gets expensive.
c3x prices the pool from node_count and node_size at the vCore-hour rate; active hours are usage-driven via auto-pause, so the estimate is a full-utilization ceiling you can scale down with realistic usage.
Terraform example
A minimal but realistic configuration that C3X can estimate.
resource "azurerm_synapse_spark_pool" "analytics" {
name = "sparkpool"
synapse_workspace_id = azurerm_synapse_workspace.main.id
node_size_family = "MemoryOptimized"
node_size = "Small"
node_count = 3
auto_pause {
delay_in_minutes = 15
}
}Pricing dimensions
What you actually pay for when you provision azurerm_synapse_spark_pool.
| Dimension | Unit | What's being charged |
|---|---|---|
| Spark vCore-hours | per vCore-hour | node_count × vCores per node (Small 4 / Medium 8 / Large 16) × active hours. Billed only while the pool is active; auto-pause stops the charge when idle. ~$0.143/vCore-hour → 3 Small nodes × 730h ≈ $1,252.68/month at full utilization |
Sample C3X output
Three Small nodes (4 vCore each) active 24/7 — the full-utilization ceiling:
azurerm_synapse_spark_pool.analytics
└─ Spark vCore-hours (3 × 4 vCore × 730h) 8760 vCore-hours $1,252.68
Monthly $1,252.68Optimization tips
Common ways to reduce azurerm_synapse_spark_pool cost without changing the workload.
Enable auto-pause with a short idle timeout
Up to ~90% for intermittent workloadsAuto-pause spins the pool down after idle and bills nothing while paused. For bursty, job-based Spark workloads this is the difference between paying for 730 hours and paying for the hours you actually run jobs — often a fraction of the always-on cost.
Right-size node size and count
Proportional to over-sizing avoidedCost scales linearly with node_count and the vCores per node_size. Match the pool to the job's real parallelism — over-sizing for the largest occasional job means paying for it on every run.
Use autoscale within the pool
Workload-dependentAutoscale lets the pool grow and shrink node count between a min and max based on load, so small jobs don't run on a pool sized for the biggest one.
Consolidate small jobs
Per avoided activationEach pool activation has spin-up overhead. Batching small jobs into fewer pool sessions reduces total active hours versus many short, separate activations.
FAQ
How is an Azure Synapse Spark pool billed?
Per vCore-hour of active nodes: node_count × vCores per node (Small 4, Medium 8, Large 16) × the hours the pool is running, at ~$0.143/vCore-hour. Crucially, it bills only while active — auto-pause stops the charge when idle.
Does a Spark pool cost money when idle?
Not if auto-pause is enabled — the pool spins down after the idle timeout and bills nothing while paused, resuming when a job arrives. Without auto-pause, the pool bills its full vCore allocation continuously.
Why is the estimate so high?
The sample shows full 24/7 utilization (~$1,253/month for 3 Small nodes), which is the ceiling, not the typical cost. With auto-pause and job-based usage, the real bill is the active hours only — usually far lower. Model your actual active hours to see the realistic figure.
How does c3x estimate the cost?
From node_count and node_size at the vCore-hour rate. Active hours depend on auto-pause and workload, so the estimate is a full-utilization ceiling you scale down with realistic usage.
Related resources
Estimate this resource in your own Terraform
Free, open source, no API key. C3X parses your Terraform and shows line-item cost for every resource, including azurerm_synapse_spark_pool.