Skip to content
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.