$npx -y skills add PatrickGallucci/fabric-skills --skill fabric-spark-compute-remediateDiagnose and resolve Microsoft Fabric Spark compute issues including HTTP 430 throttling errors, job queueing failures, slow session startup, autoscale problems, capacity SKU limits, environment publishing failures, library conflicts, node sizing, burst factor configuration, and
| 1 | # Microsoft Fabric Spark Compute remediate |
| 2 | |
| 3 | Structured diagnostic workflows for resolving Apache Spark compute issues in Microsoft Fabric Data Engineering and Data Science workloads. |
| 4 | |
| 5 | ## When to Use This Skill |
| 6 | |
| 7 | - Spark jobs fail with HTTP 430 throttling or TooManyRequestsForCapacity errors |
| 8 | - Notebook or Spark job sessions are slow to start (>30 seconds) |
| 9 | - Environment publishing fails or hangs |
| 10 | - Autoscale is not scaling up or down as expected |
| 11 | - Jobs are queued indefinitely or expiring after 24 hours |
| 12 | - Custom pool creation fails or pools are undersized |
| 13 | - Library installation causes session startup delays |
| 14 | - Capacity appears exhausted despite low job counts |
| 15 | - VNet/Private Link provisioning adds unexpected delays |
| 16 | - Burst factor or job-level bursting behavior is unclear |
| 17 | |
| 18 | ## Prerequisites |
| 19 | |
| 20 | - Workspace Admin or Capacity Admin role in Microsoft Fabric |
| 21 | - Access to the Monitoring Hub for active Spark sessions |
| 22 | - Access to Workspace Settings > Data Engineering/Science |
| 23 | - Knowledge of current Fabric capacity SKU (F2 through F2048) |
| 24 | |
| 25 | ## Quick Diagnostic: Identify Your Issue |
| 26 | |
| 27 | **Start here.** Match your symptom to a diagnostic path: |
| 28 | |
| 29 | | Symptom | Diagnostic Path | |
| 30 | |---------|----------------| |
| 31 | | HTTP 430 error | See [Throttling and Concurrency](./references/throttling-and-concurrency.md) | |
| 32 | | Jobs stuck in queue | See [Throttling and Concurrency](./references/throttling-and-concurrency.md#job-queueing) | |
| 33 | | Slow session startup | See [Session and Environment](./references/session-and-environment.md#slow-startup) | |
| 34 | | Environment publish fails | See [Session and Environment](./references/session-and-environment.md#publishing-failures) | |
| 35 | | Autoscale not working | See [Pool Configuration](./references/pool-configuration.md#autoscale) | |
| 36 | | Pool sizing questions | See [Pool Configuration](./references/pool-configuration.md#node-sizing) | |
| 37 | | Library conflicts | See [Session and Environment](./references/session-and-environment.md#library-issues) | |
| 38 | | VNet delay on first job | See [Session and Environment](./references/session-and-environment.md#vnet-delay) | |
| 39 | |
| 40 | ## Core Concepts |
| 41 | |
| 42 | ### Capacity Unit to VCore Mapping |
| 43 | |
| 44 | Every Fabric capacity SKU provides Spark VCores at a fixed ratio with a 3x burst factor: |
| 45 | |
| 46 | **1 Capacity Unit = 2 Spark VCores** |
| 47 | |
| 48 | For an F64 SKU: 64 CU x 2 = 128 base VCores, with 3x burst = 384 max Spark VCores. |
| 49 | |
| 50 | ### Job Admission Model |
| 51 | |
| 52 | Fabric Spark uses **optimistic job admission**: jobs are admitted based on their *minimum* core requirement (determined by the pool's minimum node setting). Jobs start with minimum nodes and scale up toward maximum nodes as cores become available. If no cores are available for the minimum requirement, the job is rejected or queued. |
| 53 | |
| 54 | ### Two Pool Types |
| 55 | |
| 56 | - **Starter Pools**: Pre-warmed, medium nodes only, 5-10 second startup, always available |
| 57 | - **Custom Pools**: User-configured node sizes (Small through XX-Large), 2-5 minute cold start, full flexibility |
| 58 | |
| 59 | ## remediate Workflows |
| 60 | |
| 61 | ### Workflow 1: HTTP 430 Throttling |
| 62 | |
| 63 | 1. Confirm the error: `HTTP Response code 430: This Spark job can't be run because you have hit a Spark compute or API rate limit` |
| 64 | 2. Open the Monitoring Hub and count active Spark sessions |
| 65 | 3. Calculate your capacity's max VCores: `SKU CU × 2 × 3 (burst) = max VCores` |
| 66 | 4. Compare active usage against max VCores |
| 67 | 5. Resolve by canceling idle sessions, upgrading SKU, or enabling job queueing for pipeline/scheduler jobs |
| 68 | |
| 69 | See [throttling-and-concurrency.md](./references/throttling-and-concurrency.md) for the full SKU limits table and queue configuration. |
| 70 | |
| 71 | ### Workflow 2: Slow Session Startup |
| 72 | |
| 73 | 1. Determine pool type (Starter vs Custom) |
| 74 | 2. If Starter Pool with no custom libraries: expect 5-10 seconds; if slower, check capacity utilization |
| 75 | 3. If custom libraries or Spark properties are attached via environment: expect 30 seconds to 5 minutes |
| 76 | 4. If using non-Medium node size: Starter Pool fast-start is unavailable; expect 2-5 minutes (on-demand) |
| 77 | 5. If Private Link is enabled and this is the first job: expect 10-15 minute VNet provisioning delay |
| 78 | |
| 79 | See [session-and-environment.md](./references/session-and-environment.md) for detailed diagnosis. |
| 80 | |
| 81 | ### Workflow 3: Environment Publishing Failure |
| 82 | |
| 83 | 1. Check if another Publish action is already in progress (only one at a time) |
| 84 | 2. Verify library compatibility with the selected Spark runtime version |
| 85 | 3. If runtime was recently changed, remove incompatible libraries and republish |
| 86 | 4. If Private Link is enabled, the fir |