AzureAzure Synapse AnalyticsAnalytics

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.

DimensionUnitWhat's being charged
Spark vCore-hoursper vCore-hournode_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.68

Optimization 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 workloads

Auto-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 avoided

Cost 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-dependent

Autoscale 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 activation

Each 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.