Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Applies to: ✅ Data Engineering and Data Science in Microsoft Fabric
Microsoft Fabric allows allocation of compute units through capacity, which is a dedicated set of resources that is available at a given time to be used. Capacity defines the ability of a resource to perform an activity or to produce output. Different items consume different capacity at a certain time. Microsoft Fabric offers capacity through the Fabric SKUs and trials. For more information, see What is capacity?.
When users create a Microsoft Fabric capacity on Azure, they choose a capacity size based on their analytics workload size. In Apache Spark, users get two Apache Spark VCores for every capacity unit they reserve as part of their SKU.
One Capacity Unit = Two Spark VCores
Once they have purchased the capacity, admins can create workspaces within the capacity in Microsoft Fabric. The Spark VCores associated with the capacity are shared among all the Apache Spark-based items like notebooks, Apache Spark job definitions, and lakehouses created in these workspaces.
Concurrency throttling and queueing
Spark for Fabric enforces a cores-based throttling and queueing mechanism, where users can submit jobs based on the purchased Fabric capacity SKUs. The queueing mechanism is a simple FIFO-based queue, which checks for available job slots and automatically retries the jobs once the capacity has become available.
When users submit notebook or lakehouse jobs (such as Load to Table) and the capacity is at maximum utilization—due to concurrent jobs using all Spark VCores—they receive the following error:
HTTP Response code 430: This Spark job can't be run because you have hit a Spark compute or API rate limit. To run this Spark job, cancel an active Spark job through the Monitoring hub, or choose a larger capacity SKU or try again later.
With queueing enabled, notebook jobs triggered from pipelines, job scheduler, and Spark job definitions are added to the queue and automatically retried when capacity becomes available.
Note
The queue expiration is set to 24 hours from job submission time. After this period, jobs are removed from the queue and must be resubmitted manually.
Fabric capacities are also enabled with bursting, allowing you to consume up to 3× the number of Spark VCores you've purchased. This burst helps improve concurrency by allowing more jobs to run in parallel.
Note
The bursting factor increases the total Spark VCores for concurrency and can be leveraged by a single job, if the Spark pool is configured with a higher core count.
In other words, the pool configuration determines the max cores a job can use—not just the base SKU allocation.
Example
If you have a F64 SKU with 384 Max Spark VCores with Burst Factor:
- You can configure a custom or starter pool with up to 384 Spark VCores.
- If a workspace admin creates such a pool, a single Spark job (e.g., a notebook, job definition, or lakehouse job) can use all 384 VCores.
- Example: A pool with
Medium
nodes (8 VCores each) and 48 max nodes = 384 VCores.
Tip
To maximize job performance, confirm your workspace pool is configured with sufficient node size and count.
Spark Capacity SKU Limits
Fabric capacity SKU | Equivalent Power BI SKU | Spark VCores | Max Spark VCores with Burst Factor | Queue limit |
---|---|---|---|---|
F2 | - | 4 | 20 | 4 |
F4 | - | 8 | 24 | 4 |
F8 | - | 16 | 48 | 8 |
F16 | - | 32 | 96 | 16 |
F32 | - | 64 | 192 | 32 |
F64 | P1 | 128 | 384 | 64 |
F128 | P2 | 256 | 768 | 128 |
F256 | P3 | 512 | 1536 | 256 |
F512 | P4 | 1024 | 3072 | 512 |
F1024 | - | 2048 | 6144 | 1024 |
F2048 | - | 4096 | 12288 | 2048 |
Trial Capacity | P1 | 128 | 128 | NA |
Important
The table applies only to Spark jobs running on Fabric Capacity. With autoscale billing enabled, Spark jobs run separately from Fabric capacity, avoiding bursting or smoothing. The total Spark VCores will be twice the maximum capacity units set in autoscale settings.
Example calculation
- A F64 SKU offers 128 Spark VCores.
- With a burst factor of 3, it supports up to 384 Spark VCores for concurrent execution.
- If a pool is configured with the full 384 VCores, a single job can use them all, assuming no other jobs are consuming capacity.
- Example: 3 jobs using 128 VCores each can run concurrently OR 1 job using 384 VCores can run.
Note
Jobs have a queue expiration period of 24 hours, after which they're canceled, and users must resubmit them for execution.
Spark for Fabric throttling doesn't have enforced arbitrary jobs-based limits, and the throttling is only based on the number of cores allowed for the purchased Fabric capacity SKU. Job admission by default is an optimistic admission control, where jobs are admitted based on their minimum core requirements. Learn more: Job Admission and Management.
If the default pool (Starter Pool) option is selected for the workspace, the following table lists the max concurrency job limits.
Learn more: Configuring Starter Pools.
Job level bursting
Admins can configure their Apache Spark pools to utilize the max Spark cores with burst factor available for the entire capacity. For example, a workspace admin with a F64 Fabric capacity can configure their Spark pool (Starter pool or Custom pool) to 384 Spark VCores by:
- Setting Starter Pool max nodes to 48 (with 8-core nodes), or
- Configuring a Custom Pool using XXLarge nodes (8 VCores each) with six max nodes, depending on desired sizing.
With this configuration, a single job can consume the entire burst limit, enabling maximum performance for large-scale processing.
Related content
- Get started with Apache Spark workspace administration settings in Microsoft Fabric
- Learn about Apache Spark compute for Fabric for data engineering and data science workloads