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.
Resource profiles in Microsoft Fabric let you apply predefined Spark configuration sets for common workload patterns such as read-heavy and write-heavy processing.
Profiles reduce manual Spark tuning and provide a faster path to predictable performance.
Benefits of resource profiles
- Performance by default: Apply tested Spark settings for common patterns.
- Flexibility: Choose a predefined profile or use custom settings.
- Lower tuning overhead: Reduce trial-and-error configuration changes.
Note
- New Fabric workspaces default to the
writeHeavyprofile. - In
writeHeavy, VOrder is disabled by default and must be enabled manually when needed.
Available resource profiles
| Profile | Use case | Configuration property |
|---|---|---|
readHeavyForSpark |
Optimized for Spark workloads with frequent reads | spark.fabric.resourceProfile = readHeavyForSpark |
readHeavyForPBI |
Optimized for Power BI queries on Delta tables | spark.fabric.resourceProfile = readHeavyForPBI |
writeHeavy |
Optimized for high-frequency ingestion and writes | spark.fabric.resourceProfile = writeHeavy |
custom |
Fully user-defined profile | spark.fabric.resourceProfile = custom |
Default configuration values by profile
| Resource profile | Configs |
|---|---|
writeHeavy |
{"spark.sql.parquet.vorder.default": "false", "spark.databricks.delta.optimizeWrite.enabled": "null", "spark.databricks.delta.optimizeWrite.binSize": "128", "spark.databricks.delta.optimizeWrite.partitioned.enabled": "true"} |
readHeavyForPBI |
{"spark.sql.parquet.vorder.default": "true", "spark.databricks.delta.optimizeWrite.enabled": "true", "spark.databricks.delta.optimizeWrite.binSize": "1g"} |
readHeavyForSpark |
{"spark.databricks.delta.optimizeWrite.enabled": "true", "spark.databricks.delta.optimizeWrite.partitioned.enabled": "true", "spark.databricks.delta.optimizeWrite.binSize": "128"} |
custom (example: fastIngestProfile) |
User-defined settings, for example {"spark.sql.shuffle.partitions": "800", "spark.sql.adaptive.enabled": "true", "spark.serializer": "org.apache.spark.serializer.KryoSerializer"} |
Tip
Use descriptive custom profile names such as fastIngestProfile or lowLatencyAnalytics.
Configure resource profiles
You can configure profiles at environment level or at runtime.
Configure profiles in an environment
Set the default profile for all Spark jobs in an environment unless overridden at runtime.
- Go to your Fabric workspace.
- Create a new environment or edit an existing one.
- In Spark configurations, set
spark.fabric.resourceProfileto one of the following values:writeHeavyreadHeavyForPBIreadHeavyForSpark- A custom profile name
- Save the environment.
You can also start from an existing profile and modify specific properties as needed.
Configure profiles at runtime with spark.conf.set
You can override the profile during notebook or Spark job execution:
spark.conf.set("spark.fabric.resourceProfile", "readHeavyForSpark")
Runtime configuration is useful when different parts of a workload need different behavior.
Note
If both environment and runtime configurations are set, runtime configuration takes precedence.
Default behavior
All newly created Fabric workspaces default to writeHeavy. This default is optimized for ingestion-heavy workloads, including ETL and streaming.
If your workload is read-optimized (for example, interactive queries or Power BI scenarios), switch to readHeavyForSpark or readHeavyForPBI, or customize profile settings.
Important
In new Fabric workspaces, VOrder is disabled by default (spark.sql.parquet.vorder.default=false) to optimize write-heavy processing.