Mapping
| Synapse | Databricks |
|---|---|
| Spark pool (size, autoscale, auto-pause) | Job cluster / serverless jobs; cluster policies |
Notebooks (.ipynb with Synapse metadata) | Notebooks or Python files in Git folders/bundles |
| Lake database / Spark tables (Hive-compatible metastore) | Unity Catalog catalogs/schemas/tables |
mssparkutils | dbutils (and Python libraries) |
| Linked services, workspace managed identity | Storage credentials (access connector) + external locations |
| Synapse pipelines | Databricks Workflows, or ADF pipelines calling Databricks |
| Packages (workspace/pool packages) | Cluster/job libraries, wheels in volumes |
1. Inventory
Export notebooks, Spark job definitions, pool configurations and lake database table definitions (from Synapse Studio or the Git repo connected to the workspace). Note Spark versions — Synapse runtimes (3.3/3.4) vs. Databricks Runtime versions.
2. Storage and tables
Data is usually already in ADLS Gen2 as Parquet/Delta. Register it in Unity Catalog rather than copying:
CREATE EXTERNAL LOCATION syn_lake URL 'abfss://lake@stsynapse.dfs.core.windows.net/' WITH (STORAGE CREDENTIAL sc_lake);
CREATE TABLE main.sales.orders USING DELTA LOCATION 'abfss://lake@stsynapse.dfs.core.windows.net/sales/orders';
Parquet tables can be converted with CONVERT TO DELTA.
3. Code changes
# Synapse
from notebookutils import mssparkutils
files = mssparkutils.fs.ls("abfss://lake@stsynapse.dfs.core.windows.net/raw/")
secret = mssparkutils.credentials.getSecret("kv-data", "api-key", "ls_keyvault")
mssparkutils.notebook.run("child_notebook", 600, {"date": "2026-10-25"})
# Databricks
files = dbutils.fs.ls("abfss://lake@stsynapse.dfs.core.windows.net/raw/") # or /Volumes/... paths
secret = dbutils.secrets.get(scope="kv-data", key="api-key") # Key Vault-backed scope
dbutils.notebook.run("child_notebook", 600, {"date": "2026-10-25"})
Also check: %%configure magic blocks (move to cluster/job config), spark.read.synapsesql() connector usage (use the Azure Synapse/SQL connectors or JDBC), and table names (use three-level names).
4. Orchestration
Either rebuild Synapse pipelines as Databricks Workflows (bundles), or move pipelines to ADF and replace Notebook activities with Databricks Job activities.
5. Validate and cut over
Run jobs side by side writing to test schemas; compare outputs and runtimes. Switch consumers (Power BI, serverless SQL views) to Databricks SQL or keep reading the same Delta files. Pause and delete Spark pools when idle for the rollback window.
Tip
If Synapse serverless SQL views read the same Delta files, they keep working during the move — a useful way to keep reports alive while Spark jobs migrate.
Checklist
- Notebooks, job definitions, pool configs exported
- Storage registered in UC; tables mapped
-
mssparkutils,%%configureand connectors replaced - Pipelines rebuilt; parallel run reconciled
- Spark pools removed