asset-bundles
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseDatabricks Asset Bundle (DABs) Writer
Databricks Asset Bundle (DABs) 编写指南
Overview
概述
Create DABs for multi-environment deployment (dev/staging/prod).
创建用于多环境部署(开发/预发布/生产)的DABs。
Reference Files
参考文件
- SDP_guidance.md - Spark Declarative Pipeline configurations
- alerts_guidance.md - SQL Alert schemas (critical - API differs)
- SDP_guidance.md - Spark声明式流水线配置
- alerts_guidance.md - SQL告警模式(重要 - API存在差异)
Bundle Structure
Bundle结构
project/
├── databricks.yml # Main config + targets
├── resources/*.yml # Resource definitions
└── src/ # Code/dashboard filesproject/
├── databricks.yml # 主配置 + 目标环境
├── resources/*.yml # 资源定义
└── src/ # 代码/仪表板文件Main Configuration (databricks.yml)
主配置(databricks.yml)
yaml
bundle:
name: project-name
include:
- resources/*.yml
variables:
catalog:
default: "default_catalog"
schema:
default: "default_schema"
warehouse_id:
lookup:
warehouse: "Shared SQL Warehouse"
targets:
dev:
default: true
mode: development
workspace:
profile: dev-profile
variables:
catalog: "dev_catalog"
schema: "dev_schema"
prod:
mode: production
workspace:
profile: prod-profile
variables:
catalog: "prod_catalog"
schema: "prod_schema"yaml
bundle:
name: project-name
include:
- resources/*.yml
variables:
catalog:
default: "default_catalog"
schema:
default: "default_schema"
warehouse_id:
lookup:
warehouse: "Shared SQL Warehouse"
targets:
dev:
default: true
mode: development
workspace:
profile: dev-profile
variables:
catalog: "dev_catalog"
schema: "dev_schema"
prod:
mode: production
workspace:
profile: prod-profile
variables:
catalog: "prod_catalog"
schema: "prod_schema"Dashboard Resources
仪表板资源
Support for dataset_catalog and dataset_schema parameters added in Databricks CLI 0.281.0 (January 2026)
yaml
resources:
dashboards:
dashboard_name:
display_name: "[${bundle.target}] Dashboard Title"
file_path: ../src/dashboards/dashboard.lvdash.json # Relative to resources/
warehouse_id: ${var.warehouse_id}
dataset_catalog: ${var.catalog} # Default catalog used by all datasets in the dashboard if not otherwise specified in the query
dataset_schema: ${var.schema} # Default schema used by all datasets in the dashboard if not otherwise specified in the query
permissions:
- level: CAN_RUN
group_name: "users"Permission levels: , , ,
CAN_READCAN_RUNCAN_EDITCAN_MANAGEDatabricks CLI 0.281.0及以上版本(2026年1月)新增对dataset_catalog和dataset_schema参数的支持
yaml
resources:
dashboards:
dashboard_name:
display_name: "[${bundle.target}] Dashboard Title"
file_path: ../src/dashboards/dashboard.lvdash.json # 相对于resources/目录
warehouse_id: ${var.warehouse_id}
dataset_catalog: ${var.catalog} # 如果查询中未另行指定,仪表板中所有数据集使用的默认catalog
dataset_schema: ${var.schema} # 如果查询中未另行指定,仪表板中所有数据集使用的默认schema
permissions:
- level: CAN_RUN
group_name: "users"权限级别:, , ,
CAN_READCAN_RUNCAN_EDITCAN_MANAGEPipelines
流水线
See SDP_guidance.md for pipeline configuration
流水线配置请参考SDP_guidance.md
SQL Alerts
SQL告警
See alerts_guidance.md - Alert schema differs significantly from other resources
请参考alerts_guidance.md - 告警模式与其他资源存在显著差异
Jobs Resources
任务资源
yaml
resources:
jobs:
job_name:
name: "[${bundle.target}] Job Name"
tasks:
- task_key: "main_task"
notebook_task:
notebook_path: ../src/notebooks/main.py # Relative to resources/
new_cluster:
spark_version: "13.3.x-scala2.12"
node_type_id: "i3.xlarge"
num_workers: 2
schedule:
quartz_cron_expression: "0 0 9 * * ?"
timezone_id: "America/Los_Angeles"
permissions:
- level: CAN_VIEW
group_name: "users"Permission levels: , ,
CAN_VIEWCAN_MANAGE_RUNCAN_MANAGE⚠️ Cannot modify "admins" group permissions on jobs - verify custom groups exist before use
yaml
resources:
jobs:
job_name:
name: "[${bundle.target}] Job Name"
tasks:
- task_key: "main_task"
notebook_task:
notebook_path: ../src/notebooks/main.py # 相对于resources/目录
new_cluster:
spark_version: "13.3.x-scala2.12"
node_type_id: "i3.xlarge"
num_workers: 2
schedule:
quartz_cron_expression: "0 0 9 * * ?"
timezone_id: "America/Los_Angeles"
permissions:
- level: CAN_VIEW
group_name: "users"权限级别:, ,
CAN_VIEWCAN_MANAGE_RUNCAN_MANAGE⚠️ 无法修改任务上的"admins"组权限 - 使用前请确认自定义组已存在
Path Resolution
路径解析
⚠️ Critical: Paths depend on file location:
| File Location | Path Format | Example |
|---|---|---|
| | |
| | |
Why: files are one level deep, so use to reach bundle root. is at root, so use
resources/../databricks.yml./⚠️ 关键注意事项:路径取决于文件位置:
| 文件位置 | 路径格式 | 示例 |
|---|---|---|
| | |
| | |
原因:目录下的文件位于一级子目录,因此使用回到Bundle根目录。位于根目录,因此使用
resources/../databricks.yml./Volume Resources
存储卷资源
yaml
resources:
volumes:
my_volume:
catalog_name: ${var.catalog}
schema_name: ${var.schema}
name: "volume_name"
volume_type: "MANAGED"⚠️ Volumes use not - different format from other resources
grantspermissionsyaml
resources:
volumes:
my_volume:
catalog_name: ${var.catalog}
schema_name: ${var.schema}
name: "volume_name"
volume_type: "MANAGED"⚠️ 存储卷使用而非 - 格式与其他资源不同
grantspermissionsApps Resources
应用资源
Apps resource support added in Databricks CLI 0.239.0 (January 2025)
Apps in DABs have a minimal configuration - environment variables are defined in in the source directory, NOT in databricks.yml.
app.yaml应用资源支持在Databricks CLI 0.239.0及以上版本(2025年1月)中添加
DABs中的应用配置极简 - 环境变量定义在源目录的中,而非databricks.yml。
app.yamlGenerate from Existing App (Recommended)
从现有应用生成(推荐)
bash
undefinedbash
undefinedGenerate bundle config from existing CLI-deployed app
从现有CLI部署的应用生成Bundle配置
databricks bundle generate app --existing-app-name my-app --key my_app --profile DEFAULT
databricks bundle generate app --existing-app-name my-app --key my_app --profile DEFAULT
This creates:
此命令将创建:
- resources/my_app.app.yml (minimal resource definition)
- resources/my_app.app.yml(极简资源定义)
- src/app/ (downloaded source files including app.yaml)
- src/app/(下载的源文件,包括app.yaml)
undefinedundefinedManual Configuration
手动配置
resources/my_app.app.yml:
yaml
resources:
apps:
my_app:
name: my-app-${bundle.target} # Environment-specific naming
description: "My application"
source_code_path: ../src/app # Relative to resources/ dirsrc/app/app.yaml: (Environment variables go here)
yaml
command:
- "python"
- "dash_app.py"
env:
- name: USE_MOCK_BACKEND
value: "false"
- name: DATABRICKS_WAREHOUSE_ID
value: "your-warehouse-id"
- name: DATABRICKS_CATALOG
value: "main"
- name: DATABRICKS_SCHEMA
value: "my_schema"databricks.yml:
yaml
bundle:
name: my-bundle
include:
- resources/*.yml
variables:
warehouse_id:
default: "default-warehouse-id"
targets:
dev:
default: true
mode: development
workspace:
profile: dev-profile
variables:
warehouse_id: "dev-warehouse-id"resources/my_app.app.yml:
yaml
resources:
apps:
my_app:
name: my-app-${bundle.target} # 区分环境的命名
description: "My application"
source_code_path: ../src/app # 相对于resources/目录src/app/app.yaml:(环境变量在此定义)
yaml
command:
- "python"
- "dash_app.py"
env:
- name: USE_MOCK_BACKEND
value: "false"
- name: DATABRICKS_WAREHOUSE_ID
value: "your-warehouse-id"
- name: DATABRICKS_CATALOG
value: "main"
- name: DATABRICKS_SCHEMA
value: "my_schema"databricks.yml:
yaml
bundle:
name: my-bundle
include:
- resources/*.yml
variables:
warehouse_id:
default: "default-warehouse-id"
targets:
dev:
default: true
mode: development
workspace:
profile: dev-profile
variables:
warehouse_id: "dev-warehouse-id"Key Differences from Other Resources
与其他资源的主要差异
| Aspect | Apps | Other Resources |
|---|---|---|
| Environment vars | In | In databricks.yml or resource file |
| Configuration | Minimal (name, description, path) | Extensive (tasks, clusters, etc.) |
| Source path | Points to app directory | Points to specific files |
⚠️ Important: When source code is in project root (not src/app), use in the resource file
source_code_path: ..| 方面 | 应用 | 其他资源 |
|---|---|---|
| 环境变量 | 在 | 在databricks.yml或资源文件中 |
| 配置 | 极简(名称、描述、路径) | 详尽(任务、集群等) |
| 源路径 | 指向应用目录 | 指向特定文件 |
⚠️ 重要提示:当源代码位于项目根目录(而非src/app)时,在资源文件中使用
source_code_path: ..Other Resources
其他资源
DABs supports schemas, models, experiments, clusters, warehouses, etc. Use to inspect schemas.
databricks bundle schemaReference: DABs Resource Types
DABs支持schema、模型、实验、集群、计算仓库等。使用查看模式。
databricks bundle schema参考:DABs资源类型
Common Commands
常用命令
Validation
验证
bash
databricks bundle validate # Validate default target
databricks bundle validate -t prod # Validate specific targetbash
databricks bundle validate # 验证默认目标环境
databricks bundle validate -t prod # 验证指定目标环境Deployment
部署
bash
databricks bundle deploy # Deploy to default target
databricks bundle deploy -t prod # Deploy to specific target
databricks bundle deploy --auto-approve # Skip confirmation prompts
databricks bundle deploy --force # Force overwrite remote changesbash
databricks bundle deploy # 部署到默认目标环境
databricks bundle deploy -t prod # 部署到指定目标环境
databricks bundle deploy --auto-approve # 跳过确认提示
databricks bundle deploy --force # 强制覆盖远程变更Running Resources
运行资源
bash
databricks bundle run resource_name # Run a pipeline or job
databricks bundle run pipeline_name -t prod # Run in specific environmentbash
databricks bundle run resource_name # 运行流水线或任务
databricks bundle run pipeline_name -t prod # 在指定环境中运行Apps require bundle run to start after deployment
应用部署后需要执行bundle run来启动
databricks bundle run app_resource_key -t dev # Start/deploy the app
undefineddatabricks bundle run app_resource_key -t dev # 启动/部署应用
undefinedMonitoring & Logs
监控与日志
View application logs (for Apps resources):
bash
undefined查看应用日志(针对应用资源):
bash
undefinedView logs for deployed apps
查看已部署应用的日志
databricks apps logs <app-name> --profile <profile-name>
databricks apps logs <app-name> --profile <profile-name>
Examples:
示例:
databricks apps logs my-dash-app-dev -p DEFAULT
databricks apps logs my-streamlit-app-prod -p DEFAULT
**What logs show:**
- `[SYSTEM]` - Deployment progress, file updates, dependency installation
- `[APP]` - Application output (print statements, errors)
- Backend connection status
- Deployment IDs and timestamps
- Stack traces for errors
**Key log patterns to look for:**
- ✅ `Deployment successful` - Confirms deployment completed
- ✅ `App started successfully` - App is running
- ✅ `Initialized real backend` - Backend connected to Unity Catalog
- ❌ `Error:` - Look for error messages and stack traces
- 📝 `Requirements installed` - Dependencies loaded correctlydatabricks apps logs my-dash-app-dev -p DEFAULT
databricks apps logs my-streamlit-app-prod -p DEFAULT
**日志内容说明:**
- `[SYSTEM]` - 部署进度、文件更新、依赖安装
- `[APP]` - 应用输出(打印语句、错误)
- 后端连接状态
- 部署ID和时间戳
- 错误堆栈跟踪
**需要关注的关键日志模式:**
- ✅ `Deployment successful` - 确认部署完成
- ✅ `App started successfully` - 应用已启动
- ✅ `Initialized real backend` - 后端已连接到Unity Catalog
- ❌ `Error:` - 查找错误信息和堆栈跟踪
- 📝 `Requirements installed` - 依赖已正确加载Cleanup
清理
bash
databricks bundle destroy -t dev
databricks bundle destroy -t prod --auto-approvebash
databricks bundle destroy -t dev
databricks bundle destroy -t prod --auto-approveCommon Issues
常见问题
| Issue | Solution |
|---|---|
| App deployment fails | Check logs: |
| App not connecting to Unity Catalog | Check logs for backend connection errors; verify warehouse ID and permissions |
| Wrong permission level | Dashboards: CAN_READ/RUN/EDIT/MANAGE; Jobs: CAN_VIEW/MANAGE_RUN/MANAGE |
| Path resolution fails | Use |
| Catalog doesn't exist | Create catalog first or update variable |
| "admins" group error on jobs | Cannot modify admins permissions on jobs |
| Volume permissions | Use |
| Hardcoded catalog in dashboard | Use dataset_catalog parameter (CLI v0.281.0+), create environment-specific files, or parameterize JSON |
| App not starting after deploy | Apps require |
| App env vars not working | Environment variables go in |
| Wrong app source path | Use |
| Debugging any app issue | First step: |
| 问题 | 解决方案 |
|---|---|
| 应用部署失败 | 查看日志: |
| 应用无法连接到Unity Catalog | 查看日志中的后端连接错误;验证计算仓库ID和权限 |
| 权限级别错误 | 仪表板:CAN_READ/RUN/EDIT/MANAGE;任务:CAN_VIEW/MANAGE_RUN/MANAGE |
| 路径解析失败 | 在resources/*.yml中使用 |
| Catalog不存在 | 先创建Catalog或更新变量 |
| 任务上的"admins"组错误 | 无法修改任务的admins权限 |
| 存储卷权限 | 存储卷使用 |
| 仪表板中硬编码Catalog | 使用dataset_catalog参数(CLI v0.281.0+)、创建环境特定文件,或参数化JSON |
| 应用部署后未启动 | 应用需要执行 |
| 应用环境变量不生效 | 环境变量应放在 |
| 应用源路径错误 | 如果源文件在项目根目录,从resources/目录使用 |
| 调试任何应用问题 | 第一步:执行 |
Key Principles
核心原则
- Path resolution: in resources/*.yml,
../src/in databricks.yml./src/ - Variables: Parameterize catalog, schema, warehouse
- Mode: for dev/staging,
developmentfor prodproduction - Groups: Use for all workspace users
"users" - Job permissions: Verify custom groups exist; can't modify "admins"
- 路径解析:resources/*.yml中使用,databricks.yml中使用
../src/./src/ - 变量:参数化catalog、schema、计算仓库
- 模式:开发/预发布环境使用,生产环境使用
developmentproduction - 用户组:使用指代所有工作区用户
"users" - 任务权限:确认自定义组已存在;无法修改admins权限