databricks-migration

작성자: microsoft

업데이트 확인 — 세션당 한 번 (필수) 이 스킬이 세션에서 처음 사용될 때, 진행 전에 업데이트 확인 스킬을 실행하십시오.

npx skills add https://github.com/microsoft/skills-for-fabric --skill databricks-migration

Update Check — ONCE PER SESSION (mandatory) The first time this skill is used in a session, run the check-updates skill before proceeding.

  • GitHub Copilot CLI / VS Code: invoke the check-updates skill.
  • Claude Code / Cowork / Cursor / Windsurf / Codex: compare local vs remote package.json version.
  • Skip if the check was already performed earlier in this session.

CRITICAL NOTES

  1. To find workspace details (including its ID) from a workspace name: list all workspaces, then use JMESPath filtering
  2. To find item details (including its ID) from workspace ID, item type, and item name: list all items of that type in that workspace, then use JMESPath filtering
  3. dbutils.widgets has no direct equivalent in Fabric — use notebook parameters (cell tag parameters) or notebookutils.runtime.context for context injection
  4. dbutils.library (runtime library install) has no equivalent — use Fabric Environments for reproducible library management
  5. Unity Catalog uses a 3-level namespace (catalog.schema.table); Fabric Lakehouse uses 2-level (schema.table within a named Lakehouse)

Databricks → Microsoft Fabric Migration

Prerequisite Knowledge

Read these companion documents before executing migration tasks:

  • COMMON-CORE.md — Fabric REST API patterns, authentication, token audiences, item discovery
  • COMMON-CLI.mdaz rest, az login, token acquisition, Fabric REST via CLI
  • SPARK-AUTHORING-CORE.md — Notebook deployment, lakehouse creation, Spark job execution

For notebook and Lakehouse creation, see spark-authoring-cli. For Fabric Warehouse DDL/DML authoring, see sqldw-authoring-cli.


Table of Contents

TopicReference
Migration Workload Map§ Migration Workload Map
Complete dbutilsnotebookutils Mappingdbutils-to-notebookutils.md
Unity Catalog → Fabric Lakehouse Schemascatalog-migration.md
Before/After Code Patternscode-patterns.md
Cluster Config → Fabric Spark Pools§ Cluster Config → Fabric Spark Pools
Databricks Jobs → Spark Job Definitions§ Databricks Jobs → Spark Job Definitions
Delta Sharing → OneLake Shortcuts§ Delta Sharing → OneLake Shortcuts
MLflow → Fabric ML Experiments§ MLflow → Fabric ML Experiments
Must / Prefer / Avoid§ Must / Prefer / Avoid
Authentication & Token AcquisitionCOMMON-CORE.md § Authentication
Lakehouse ManagementSPARK-AUTHORING-CORE.md § Lakehouse Management
Notebook ManagementSPARK-AUTHORING-CORE.md § Notebook Management

Migration Workload Map

Databricks ComponentFabric TargetNotes
All-purpose cluster (notebooks, REPL)Fabric Notebook (Starter Pool or Custom Pool)No persistent cluster — Fabric provisions compute on session start
Job cluster (automated jobs)Spark Job Definition (SJD)SJD maps one-to-one with Databricks Jobs on job clusters
Unity CatalogFabric Lakehouse (schema per namespace)See catalog-migration.md
Databricks Repos (Git-backed notebooks)Fabric Git IntegrationConnect workspace to Azure DevOps or GitHub; notebooks are synced
Delta Live Tables (DLT)Fabric Notebooks + Data PipelinesNo DLT equivalent — rewrite DLT datasets as parameterized notebook cells with pipeline orchestration
Databricks SQL WarehousesFabric Warehouse or Lakehouse SQL EndpointSQL warehouse sessions → Warehouse (for write) or SQL Endpoint (for read-only)
MLflow TrackingFabric ML ExperimentsMLflow SDK is supported in Fabric — see § MLflow
Delta SharingOneLake Shortcuts + Fabric external data sharingSee § Delta Sharing → OneLake Shortcuts
Databricks Feature StoreFabric Feature Store (preview)Direct conceptual equivalent; APIs differ
dbutils (all sub-modules)notebookutils (most sub-modules)See dbutils-to-notebookutils.md for full mapping

dbutilsnotebookutils Quick Reference

The complete side-by-side API table is in dbutils-to-notebookutils.md. The key mappings are:

dbutils Callnotebookutils EquivalentCompatibility Note
dbutils.fs.ls(path)notebookutils.fs.ls(path)Direct replacement
dbutils.fs.cp(src, dest)notebookutils.fs.cp(src, dest)Direct replacement
dbutils.fs.mv(src, dest)notebookutils.fs.mv(src, dest, create_path, overwrite=False)⚠️ Signature differs — see dbutils-to-notebookutils.md
dbutils.fs.rm(path, recurse)notebookutils.fs.rm(path, recurse)Direct replacement
dbutils.fs.mkdirs(path)notebookutils.fs.mkdirs(path)Direct replacement
dbutils.fs.put(path, contents)notebookutils.fs.put(path, contents)Direct replacement
dbutils.fs.head(path, maxBytes)notebookutils.fs.head(path, max_bytes)⚠️ Default differs — Python/Scala 100 KB, R 64 KB. See dbutils-to-notebookutils.md
dbutils.fs.mount(...)notebookutils.fs.mount(source, mountPoint, extraConfigs=None)Supported — Microsoft Entra (default), accountKey, or sasToken auth. For cross-workspace / persistent sharing, prefer OneLake Shortcuts
dbutils.secrets.get(scope, key)notebookutils.credentials.getSecret(keyVaultUrl, secretName)Scope → Key Vault URL; key → secret name
dbutils.notebook.run(path, timeout, args)notebookutils.notebook.run(name, timeout, args)path → notebook name (relative to workspace)
dbutils.notebook.exit(value)notebookutils.notebook.exit(value)Direct replacement
dbutils.widgets.get(name)See § Widgets MigrationNo direct equivalent
dbutils.library.install(...)Not available at runtime — use Fabric Environmentsdbutils.library.restartPython()notebookutils.session.restartPython()
dbutils.data.summarize(df)display(df.summary())Use display() or pandas describe()

Widgets Migration

dbutils.widgets has no direct equivalent in Fabric. Use these patterns instead:

Use CaseFabric Pattern
Pass parameter from parent notebookMark a cell in the child notebook as a parameters cell (notebook UI: cell "..." menu → "Mark cell as parameters"). The parent calls notebookutils.notebook.run("child", arguments={"param": "value"}) — at runtime the engine inserts a new cell beneath the parameters cell that overrides the defaults
Pipeline-driven parameterizationSame parameters-cell mechanism; the Fabric Pipeline notebook activity supplies override values via its Base parameters setting
Centralized cross-notebook configUse notebookutils.variableLibrary.getLibrary("<name>") to read values from a Variable Library item (deployment pipelines activate the right value set per stage)
Interactive selection in notebookUse display() with input cells, IPython widgets (Python only), or Fabric Data Activator

Note: notebookutils.runtime.context does not expose parameter values. It's for execution metadata (workspace/notebook/activity/user IDs, pipeline-vs-interactive flags, etc.). See dbutils-to-notebookutils.md § Runtime Context.


Cluster Config → Fabric Spark Pools

Databricks Cluster ConceptFabric Spark EquivalentNotes
All-purpose cluster (interactive)Starter PoolAuto-provisioned; no config; ideal for notebooks
Job cluster (single-use for jobs)Custom Pool (or Starter Pool) attached to SJDConfigure node size, autoscale in Fabric capacity settings
Node type (e.g., Standard_DS3_v2)Fabric node size (Small/Medium/Large/X-Large/XX-Large)Map by vCore/memory ratio
Autoscale min/max workersCustom Pool min/max node settingsAvailable in workspace Spark settings
spark.conf in cluster settingsFabric Environment Spark propertiesMove to Environment item; attach to workspace or notebook
init_scripts (cluster init)Fabric Environment install scriptNot fully equivalent — only library installs are supported
Databricks Runtime versionFabric Runtime (1.1 = Spark 3.3, 1.2 = Spark 3.4, 1.3 = Spark 3.5)Choose matching Spark version; test deprecated APIs
Photon acceleratorFabric Native Execution Engine (NEE)Enable in workspace Spark settings; vectorized execution similar to Photon

Databricks Jobs → Spark Job Definitions

Databricks Jobs ConceptFabric SJD EquivalentNotes
Job with single notebook taskSJD referencing a notebookAttach a default Lakehouse; pass parameters via SJD args
Multi-task job (DAG of tasks)Fabric Data Pipeline orchestrating multiple SJDs/notebooksPipeline activities map to job tasks; dependencies = activity dependencies
Job schedule (cron)Pipeline schedule triggerCron expression → recurrence trigger in pipeline
Job parametersSJD default arguments or notebook cell parametersParameters cell in notebook is injected at runtime
Job clusters per taskPool attached to SJDEach SJD can specify its Spark pool independently
Databricks WorkflowsFabric Data PipelinesFull DAG orchestration with conditions, loops, and failure branches

Delegate to spark-authoring-cli for SJD creation and notebook deployment.


Delta Sharing → OneLake Shortcuts

Databricks Delta Sharing PatternFabric Equivalent
Provider publishes a Delta shareFabric external data sharing (preview) or OneLake Shortcut to ADLS Gen2 where Delta data resides
Recipient reads shared dataCreate a OneLake Shortcut pointing to the ADLS Gen2 Delta table; access via Lakehouse
Cross-workspace table sharing within orgOneLake Shortcuts pointing to another workspace's Lakehouse tables — no data copy
Cross-tenant sharingFabric external data sharing (GA roadmap) — use ADLS Gen2 shortcut as interim

MLflow → Fabric ML Experiments

Fabric ML Experiments are built on the MLflow SDK — most code is directly portable:

Databricks MLflow PatternFabric EquivalentMigration Action
mlflow.set_tracking_uri("databricks")Remove — Fabric tracking is automaticDelete this line in Fabric notebooks
mlflow.set_experiment("/path/exp")mlflow.set_experiment("experiment_name")Use name only (not path); Fabric creates the Experiment item
mlflow.log_metric(...)mlflow.log_metric(...)identicalNo change
mlflow.log_artifact(...)mlflow.log_artifact(...)identicalNo change
mlflow.autolog()mlflow.autolog()identicalNo change
mlflow.register_model(...)mlflow.register_model(...)identicalModel Registry is available in Fabric ML
Databricks Model ServingAzure ML Online Endpoints or Fabric Data ActivatorNo direct Fabric model serving yet — use Azure ML

Must / Prefer / Avoid

MUST DO

  • Replace all dbutils.* calls using the mapping in dbutils-to-notebookutils.mddbutils is not available in Fabric notebooks
  • Migrate dbutils.fs.mount() to notebookutils.fs.mount() (✅ supported — Microsoft Entra default, or accountKey / sasToken from Key Vault). For cross-workspace or persistent sharing, prefer OneLake Shortcuts instead. Always pair mount() with unmount() in try/finally — Fabric mounts are not released automatically on session end
  • Replace dbutils.secrets.get(scope, key) with notebookutils.credentials.getSecret(keyVaultUrl, secretName) — secret scopes map to Azure Key Vault URLs
  • Redesign widget-based parameter passing using notebook parameters cells (cell "..." menu → "Mark cell as parameters"); use notebookutils.variableLibrary for centralized cross-notebook config. notebookutils.runtime.context does not expose parameter values
  • Replace dbutils.library.install*() with Fabric Environments — runtime library installs are not supported in production. dbutils.library.restartPython() maps to notebookutils.session.restartPython() (Python / PySpark only)
  • Adapt Unity Catalog 3-level namespaces (catalog.schema.table) to Fabric 2-level (schema.table within a Lakehouse) — see catalog-migration.md
  • Map Databricks cluster init scripts to Fabric Environments — cluster-level library installs must move to Environment items

PREFER

  • Fabric Native Execution Engine (NEE) as the Photon equivalent — enable in workspace Spark settings for vectorized execution on Delta Lake
  • OneLake Shortcuts over data copy for Delta tables that already exist in ADLS Gen2 — point directly without re-ingesting
  • Fabric Git Integration as the replacement for Databricks Repos — connect workspace to ADO or GitHub for notebook version control
  • Fabric ML Experiments for direct MLflow continuity — tracking code requires minimal changes (remove set_tracking_uri)
  • Medallion architecture when restructuring migrated Databricks catalogs — align bronze, silver, gold Unity Catalog schemas to separate Fabric Lakehouses
  • Starter Pool for migrating interactive notebook workflows — eliminates cluster startup time that was a common pain point in Databricks job clusters

AVOID

  • Do not import dbutils or attempt dbutils = ... assignments in Fabric notebooks — this will raise NameError; always use notebookutils
  • Do not assume Unity Catalog governance policies transfer automatically — RBAC, row-level security, and column masking must be reconfigured in Fabric using workspace roles and Lakehouse permissions
  • Do not use %pip install in production Fabric notebooks at runtime — use Fabric Environments for stable, versioned library management
  • Do not attempt to port Delta Live Tables (DLT) pipelines verbatim — DLT has no Fabric equivalent; rewrite as parameterized notebooks orchestrated by Fabric Pipelines
  • Do not rely on Databricks-specific Spark configurations (e.g., spark.databricks.*) — these are proprietary and will be silently ignored or raise errors in Fabric
  • Do not use DBFS paths (dbfs:/...) — there is no DBFS in Fabric; all paths must use OneLake abfss:// or Lakehouse-relative paths

Examples

See dbutils-to-notebookutils.md and code-patterns.md for the full mapping. Key quick references:

dbutils.fsnotebookutils.fs

# Databricks
dbutils.fs.ls("/mnt/bronze/orders/")
dbutils.fs.cp("/mnt/raw/file.csv", "/mnt/archive/file.csv")

# Fabric (replace DBFS/mount paths with OneLake relative paths)
notebookutils.fs.ls("Files/bronze/orders/")
notebookutils.fs.cp("Files/raw/file.csv", "Files/archive/file.csv")

dbutils.secretsnotebookutils.credentials

# Databricks
pwd = dbutils.secrets.get(scope="prod", key="db-password")

# Fabric (scope → Key Vault URL, key → secret name)
pwd = notebookutils.credentials.getSecret("https://myvault.vault.azure.net/", "db-password")

Unity Catalog namespace → Lakehouse schema

# Databricks
df = spark.read.table("prod.silver.customers")

# Fabric (catalog dropped; Lakehouse context provides it)
df = spark.read.table("silver.customers")

microsoft의 다른 스킬

oss-growth
microsoft
OSS 성장 해커 페르소나
official
microsoft-foundry
microsoft
Foundry 에이전트를 엔드투엔드로 배포, 평가 및 관리: Docker 빌드, ACR 푸시, 호스팅/프롬프트 에이전트 생성, 컨테이너 시작, 배치 평가, 지속적 평가, 프롬프트 최적화 워크플로, agent.yaml, 트레이스에서 데이터셋 큐레이션. 용도: Foundry에 에이전트 배포, 호스팅 에이전트, 에이전트 생성, 에이전트 호출, 에이전트 평가, 배치 평가 실행, 지속적 평가, 지속적 모니터링, 지속적 평가 상태, 프롬프트 최적화, 프롬프트 개선, 프롬프트 최적화 도구, 에이전트 지침 최적화, 에이전트 개선...
officialdevelopmentdevops
azure-ai
microsoft
Azure AI: Search, Speech, OpenAI, Document Intelligence에 사용됩니다. 검색, 벡터/하이브리드 검색, 음성-텍스트 변환, 텍스트-음성 변환, 전사, OCR을 지원합니다. 사용 시점: AI Search, 쿼리 검색, 벡터 검색, 하이브리드 검색, 의미 검색, 음성-텍스트 변환, 텍스트-음성 변환, 전사, OCR, 텍스트를 음성으로 변환.
officialdevelopmentapi
azure-deploy
microsoft
이미 준비된 애플리케이션에 대해 기존 .azure/deployment-plan.md 및 인프라 파일이 있는 경우 Azure 배포를 실행합니다. 사용자가 새 애플리케이션 생성을 요청할 때는 이 스킬을 사용하지 말고 azure-prepare를 사용하세요. 이 스킬은 azd up, azd deploy, terraform apply, az deployment 명령을 내장된 오류 복구 기능과 함께 실행합니다. azure-prepare의 .azure/deployment-plan.md와 azure-validate의 검증 상태가 필요합니다. 사용 시점: "run azd up", "run azd deploy", "execute deployment",...
officialdevopsaws
azure-storage
microsoft
Azure Storage Services는 Blob Storage, File Shares, Queue Storage, Table Storage, Data Lake를 포함합니다. 스토리지 액세스 계층(hot, cool, cold, archive), 각 계층 사용 시기 및 계층 비교에 대한 질문에 답변합니다. 객체 스토리지, SMB 파일 공유, 비동기 메시징, NoSQL 키-값, 빅데이터 분석을 제공합니다. 수명 주기 관리를 포함합니다. 사용 용도: blob 스토리지, 파일 공유, 큐 스토리지, 테이블 스토리지, 데이터 레이크, 파일 업로드, blob 다운로드, 스토리지 계정, 액세스 계층,...
officialdevelopmentdatabase
azure-diagnostics
microsoft
Azure에서 AppLens, Azure Monitor, 리소스 상태 및 안전한 트라이지를 사용하여 Azure 프로덕션 문제를 디버그합니다. 사용 시기: 프로덕션 문제 디버그, 앱 서비스 문제 해결, 앱 서비스 높은 CPU, 앱 서비스 배포 실패, 컨테이너 앱 문제 해결, 함수 문제 해결, AKS 문제 해결, kubectl 연결 불가, kube-system/CoreDNS 오류, pod 보류 중, crashloop, 노드 준비 안 됨, 업그레이드 실패, 로그 분석, KQL, 인사이트, 이미지 풀 실패, 콜드 스타트 문제, 상태 프로브 실패,...
officialdevopsdevelopment
azure-prepare
microsoft
Azure 앱을 배포용으로 준비합니다(인프라 Bicep/Terraform, azure.yaml, Dockerfiles). 생성/현대화 또는 생성+배포에 사용하며, 크로스 클라우드 마이그레이션에는 사용하지 않습니다(azure-cloud-migrate 사용). 다음에는 사용하지 마십시오: copilot-sdk 앱(azure-hosted-copilot-sdk 사용). 사용 시점: "앱 생성", "웹 앱 빌드", "API 생성", "서버리스 HTTP API 생성", "프론트엔드 생성", "백엔드 생성", "서비스 빌드", "애플리케이션 현대화", "애플리케이션 업데이트", "인증 추가", "캐싱 추가", "Azure에 호스팅", "생성 및...
officialdevelopmentdevops
azure-validate
microsoft
Azure 배포 전 준비 상태 검증. 구성, 인프라(Bicep 또는 Terraform), RBAC 역할 할당, 관리 ID 권한, 사전 요구 사항에 대한 심층 점검을 실행합니다. 사용 시점: 내 앱 검증, 배포 준비 상태 확인, 사전 점검 실행, 구성 확인, 배포 가능 여부 확인, azure.yaml 검증, Bicep 검증, 배포 전 테스트, 배포 오류 문제 해결, Azure Functions 검증, 함수 앱 검증, 서버리스 검증...
officialdevopstesting