dbx 0.8.19 配置参数详解
逐项详解 dbx 0.8.19 三层配置:.dbx/project.json 环境与行为开关、conf/deployment.yml 工作流定义与 YAML 锚点、认证环境变量与 databrickscfg profile,全部实测回显,含 configure 覆盖陷阱、解析时序与端口规范化等排障实录。
dbx 0.8.19 配置参数详解
目标:逐项讲清 dbx 0.8.19 的三层配置体系——项目配置
.dbx/project.json、部署配置conf/deployment.yml与认证环境变量/profile——每一项均给出默认值、修改途径与实测回显(实测日期 2026-10-23,环境 Ubuntu 22.04 + Python 3.10.12,安装过程见《dbx Ubuntu 22.04 安装 dbx 0.8.19 指南》)。涉及 Databricks 云端生效的项均如实标注「需工作区凭据」。
一、环境信息
| 项目 | 值 |
|---|---|
| 操作系统 | Ubuntu 22.04(x86_64) |
| dbx 版本 | 0.8.19(typer 0.7.0 / click 8.1.8 / databricks-cli 0.17.8 / mlflow-skinny 2.22.5) |
| 实测项目 | dbx init --no-input 生成的 python_basic 模板项目(目录名 cicd-sample-project) |
| 配置文件 | .dbx/project.json(项目配置)、conf/deployment.yml(部署配置)、~/.databrickscfg(认证 profile) |
| 实测口径 | 全部修改途径(configure 命令、直接编辑文件、环境变量)与错误路径均本地实测;触发云端 API 的字段行为如实标注 |
二、前置条件
- dbx 0.8.19 已安装且
dbx --version可正常输出版本(见《dbx Ubuntu 22.04 安装 dbx 0.8.19 指南》)。 - 有一份 dbx 项目(没有的话一条命令生成,本地离线可完成):
mkdir -p /opt/dbx-lab && cd /opt/dbx-lab
dbx init --no-input
实测回显:
[dbx][2026-10-23 08:17:44.060] Configuring new project from template python_basic ⚙
[dbx][2026-10-23 08:17:44.061] No template parameters were provided. Please follow the cookiecutter init dialogue to pass template parameters...
[dbx][2026-10-23 08:17:44.248] Configuring new environment with name default
[dbx][2026-10-23 08:17:44.250] Environment configuration successfully finished
[dbx][2026-10-23 08:17:45.291] Project configuration finished. You're all set to use dbx 🔥
- 进入 init 生成的项目目录(本文后续命令均在该目录执行):
cd cicd-sample-project
三、参数查看与修改方式
dbx 的配置没有集中式 get 命令,实际可用的查看与修改途径有三种,全部实测有效:
dbx configure命令:创建/修改.dbx/project.json,全部选项见dbx configure --help;- 直接编辑文件:官方帮助原文明确「There is no strict requirement to configure project file via this command. You can also make changes in the project file via any file editor.」,直接编辑
.dbx/project.json与conf/deployment.yml完全合法(本文实测直接编辑后立即生效); - 环境变量:认证相关的
DATABRICKS_HOST/DATABRICKS_TOKEN/DBX_CLI_PROFILE,作用于单次命令进程。
dbx configure --help
实测回显(选项与真实默认值,输出节选):
╭─ Options ────────────────────────────────────────────────────────────────────╮
│ --environment -e TEXT Environment name. │
│ [default: default] │
│ --workspace-dir,--workspace-d… TEXT Workspace directory for MLflow │
│ experiment. │
│ --artifact-location TEXT Artifact location in DBFS or │
│ in the cloud storage │
│ --profile TEXT Databricks CLI profile to use. │
│ [default: DEFAULT] │
│ --enable-inplace-jinja-support Enables inplace jinja support │
│ for deployment files. │
│ --enable-failsafe-cluster-reu… Enables failsafe behaviour for │
│ assets-based launches with │
│ definitions that are based on │
│ shared job clusters feature. │
│ --enable-context-based-upload… Enables failsafe behaviour for │
│ assets-based launches with │
│ definitions that are based on │
│ shared job clusters feature. │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────╯
四、参数总览
dbx 0.8.19 的全部配置参数按所在文件分四类:
| 配置层 | 文件/变量 | 关键参数 | 修改途径 |
|---|---|---|---|
| 项目配置 | .dbx/project.json | environments.<名>.profile、storage_type、properties.workspace_directory、properties.artifact_location;顶层 inplace_jinja_support、failsafe_cluster_reuse_with_assets、context_based_upload_for_execute | dbx configure 或直接编辑 |
| 部署配置 | conf/deployment.yml | build 段、custom 段(YAML 锚点)、environments.<名>.workflows[](name/tasks/job_clusters、task_key、depends_on、spark_python_task/python_wheel_task/notebook_task、deployment_config.no_package、file:// 引用) | 直接编辑(支持 .j2 模板) |
| 认证 | 环境变量 / ~/.databrickscfg | DATABRICKS_HOST、DATABRICKS_TOKEN、DBX_CLI_PROFILE;profile 文件 [段名] 下 host/token | export 或编辑 profile 文件 |
| 命令行参数 | 各子命令选项 | -e/--environment(默认 default)、--deployment-file、--workflows、--assets-only、--tags、--branch-name、--header/-H、--write-specs-to-file、--jinja-variables-file、--debug 等 | 单次命令生效 |
💡 技术拓展:dbx 的「环境(environment)」不是系统环境变量,而是 project.json 中的一组目标工作区定义。同名概念在同类工具中的对应物:Databricks CLI Asset Bundles 叫 target(
databricks bundle deploy -t <target>),Terraform 叫 workspace + tfvars。dbx 的环境模型最简单:一层 JSON 映射,环境名即-e参数取值。
五、核心参数分类详解
5.1 项目配置 .dbx/project.json
这是 dbx 的「项目身份证」,init 时自动生成。init 后的原始内容(实测):
{
"environments": {
"default": {
"profile": "DEFAULT",
"storage_type": "mlflow",
"properties": {
"workspace_directory": "/Shared/dbx/cicd_sample_project",
"artifact_location": "dbfs:/Shared/dbx/projects/cicd_sample_project"
}
}
},
"inplace_jinja_support": false,
"failsafe_cluster_reuse_with_assets": false,
"context_based_upload_for_execute": false
}
逐项说明:
| 字段 | 默认值 | 含义 | 云端生效点 |
|---|---|---|---|
environments | 仅 default | 环境名到工作区配置的映射,键名即 -e 参数取值 | 部署目标选择 |
environments.<名>.profile | DEFAULT | 认证时使用的 ~/.databrickscfg profile 名(官方注明仅建议本地开发使用,CI/CD 走环境变量) | API 认证 |
environments.<名>.storage_type | mlflow | 部署资产的存储后端;dbx 借 MLflow tracking 机制存储 wheel 与文件资产 | 资产上传 |
properties.workspace_directory | /Shared/dbx/<项目名> | Databricks 工作区内的目录,存放 MLflow experiment 与工作流相关对象 | deploy 时自动 workspace/mkdirs 创建(实测报错可见该 API 调用) |
properties.artifact_location | dbfs:/Shared/dbx/projects/<项目名> | DBFS 路径,存放按版本上传的 wheel 与文件资产 | deploy 时上传 |
inplace_jinja_support | false | 允许在 deployment.yml 内直接写 Jinja2 表达式 | 部署文件解析 |
failsafe_cluster_reuse_with_assets | false | assets 模式 launch 时对共享 job cluster 定义的容错复用行为 | launch |
context_based_upload_for_execute | false | execute 时改用执行上下文上传代码(--upload-via-context 对应的项目级开关) | execute |
5.1.1 新增环境(实测)
dbx configure --environment prod \
--workspace-dir /Shared/dbx/prod \
--artifact-location dbfs:/Shared/dbx/projects/prod
实测回显:
[dbx][2026-10-23 08:19:28.783] Configuring new environment with name prod
[dbx][2026-10-23 08:19:28.785] Environment configuration successfully finished
cat .dbx/project.json
实测回显(prod 环境已追加):
{
"environments": {
"default": {
"profile": "DEFAULT",
"storage_type": "mlflow",
"properties": {
"workspace_directory": "/Shared/dbx/cicd_sample_project",
"artifact_location": "dbfs:/Shared/dbx/projects/cicd_sample_project"
}
},
"prod": {
"profile": "DEFAULT",
"storage_type": "mlflow",
"properties": {
"workspace_directory": "/Shared/dbx/prod",
"artifact_location": "dbfs:/Shared/dbx/projects/prod"
}
}
},
"inplace_jinja_support": false,
"failsafe_cluster_reuse_with_assets": false,
"context_based_upload_for_execute": false
}
5.1.2 三个行为开关(实测)
dbx configure --enable-inplace-jinja-support
dbx configure --enable-failsafe-cluster-reuse-with-assets
dbx configure --enable-context-based-upload-for-execute
实测回显:
[dbx][2026-10-23 08:55:41.490] ✅ Enabling jinja support
[dbx][2026-10-23 08:55:42.598] ✅ Enabling failsafe cluster reuse with assets
[dbx][2026-10-23 08:55:43.640] ✅ Enabling context-based upload for execute
grep -E 'inplace_jinja|failsafe|context_based' .dbx/project.json
实测回显:
"inplace_jinja_support": true,
"failsafe_cluster_reuse_with_assets": true,
"context_based_upload_for_execute": true
⚠️ 注意:这三个开关的帮助原文均注明「Project file should exist, otherwise command will fail」——必须在已有 project.json 的项目目录内运行,空目录会报错。
5.1.3 重跑 configure 的覆盖陷阱(排障实录)
对已有环境再次执行 dbx configure 而不指定 --workspace-dir/--artifact-location 时,dbx 会按默认规则重新计算并覆盖这两个属性。实测:对 init 生成的项目执行 dbx configure --profile demoprofile 后,workspace_directory 从 /Shared/dbx/cicd_sample_project 被改写为 /Shared/dbx/projects/cicd-sample-project,artifact_location 从 dbfs:/Shared/dbx/projects/cicd_sample_project 被改写为 dbfs:/dbx/cicd-sample-project:
dbx configure --profile demoprofile
cat .dbx/project.json
实测回显(default 环境部分):
[dbx][2026-10-23 08:55:44.713] Environment configuration successfully finished
"default": {
"profile": "demoprofile",
"storage_type": "mlflow",
"properties": {
"workspace_directory": "/Shared/dbx/projects/cicd-sample-project",
"artifact_location": "dbfs:/dbx/cicd-sample-project"
}
},
结论:只想改 profile 时,直接编辑 project.json 更安全;或改完后把 properties 两个字段手工改回。profile 字段的直接影响是认证来源(见 5.3)。
5.2 部署配置 conf/deployment.yml
部署配置回答「部署什么、在哪跑」。模板生成的完整结构(实测内容):
# Custom section is used to store configurations that might be repetative.
# Please read YAML documentation for details on how to use substitutions and anchors.
custom:
basic-cluster-props: &basic-cluster-props
spark_version: "11.3.x-cpu-ml-scala2.12"
basic-static-cluster: &basic-static-cluster
new_cluster:
<<: *basic-cluster-props
num_workers: 1
node_type_id: "i3.xlarge"
environments:
default:
workflows:
- name: "cicd-sample-project-sample-tests"
tasks:
- task_key: "main"
<<: *basic-static-cluster
spark_python_task:
python_file: "file://tests/entrypoint.py"
parameters: ["file:fuse://tests/integration", "--cov=cicd_sample_project"]
- name: "cicd-sample-project-sample-etl"
tasks:
- task_key: "main"
<<: *basic-static-cluster
python_wheel_task:
package_name: "cicd_sample_project"
entry_point: "etl"
parameters: [ "--conf-file", "file:fuse://conf/tasks/sample_etl_config.yml" ]
- name: "cicd-sample-project-sample-multitask"
job_clusters:
- job_cluster_key: "default"
<<: *basic-static-cluster
tasks:
- task_key: "etl"
job_cluster_key: "default"
spark_python_task:
python_file: "file://cicd_sample_project/tasks/sample_etl_task.py"
parameters: [ "--conf-file", "file:fuse://conf/tasks/sample_etl_config.yml" ]
- task_key: "ml"
depends_on:
- task_key: "etl"
job_cluster_key: "default"
python_wheel_task:
package_name: "cicd_sample_project"
entry_point: "ml"
parameters: [ "--conf-file", "file:fuse://conf/tasks/sample_ml_config.yml" ]
- task_key: "notebook"
deployment_config:
no_package: true
depends_on:
- task_key: "ml"
job_cluster_key: "default"
notebook_task:
notebook_path: "/Repos/Staging/cicd_sample_project/notebooks/sample_notebook"
逐项说明:
| 参数 | 层级 | 含义与实测要点 |
|---|---|---|
custom | 顶层 | 自定义锚点区,非 dbx 保留字,纯 YAML 语法特性;&basic-cluster-props 定义锚点、<<: *锚点 合并复用,避免集群参数重复 |
environments | 顶层 | 环境名映射;键必须与 project.json 的环境名一致(实测不一致时 -e nosuchenv 报 NameError: Environment nosuchenv not found in the project file .dbx/project.json) |
environments.<名>.workflows[] | 环境级 | 工作流数组,name 即 deploy/launch/destroy 的定位名 |
name | workflow | 工作流名,也决定 Databricks Jobs UI 中的作业名 |
tasks[].task_key | task | 任务键,多任务工作流中 execute 需用 --task 指定 |
tasks[].depends_on | task | 任务依赖数组(Jobs API 2.1 编排语义) |
tasks[].spark_python_task | task | 以 spark_python 脚本方式执行,python_file 指向项目内文件 |
tasks[].python_wheel_task | task | 以 wheel 入口点执行:package_name 对应 setup.py 的包名,entry_point 对应 setup.py console_scripts 中的入口(模板 setup.py 实测定义 etl = cicd_sample_project.tasks.sample_etl_task:entrypoint) |
tasks[].notebook_task | task | Notebook 任务,notebook_path 指向工作区内路径(配合 Databricks Repos 使用) |
job_clusters / job_cluster_key | workflow/task | 多任务共享集群定义;单任务工作流可直接在 task 内写 new_cluster |
deployment_config.no_package | task | 设为 true 时该任务不自动挂载项目 wheel(官方帮助注明常用于纯 Notebook/纯 JVM 任务) |
file:// 引用 | 任意参数位 | 本地文件引用,deploy/execute 时按版本上传到 artifact_location(官方帮助第 6 步原文) |
file:fuse:// 引用 | 参数位 | 以 FUSE 挂载形式(/dbfs/...)传给任务,任务运行时直接读 DBFS 路径 |
build | 顶层(可选) | 构建行为控制(官方文档语义:可指定构建所用 Python 版本、禁用构建等);0.8.19 模板默认不含此段,dbx deploy --help 中 --no-rebuild 选项的说明原文即「This option is deprecated. Please use build configuration section in the deployment file.」 |
⚠️ 时序实测:
dbx deploy的执行顺序是「部署文件发现(打印 Auto-discovery 日志)→ 认证校验 → 工作区目录初始化(workspace/mkdirs API)→ 部署文件解析」。因此 YAML 语法错误要在凭据有效、网络可达之后才会暴露——实测把 deployment.yml 改成坏 YAML 并配上可达凭据时,仍先报 API 连接错误。排障时若怀疑部署文件格式问题,请先确认认证配置正确。
任务级参数文件(file:fuse://conf/tasks/sample_etl_config.yml 引用)实测内容:
output:
database: "default"
table: "sklearn_housing"
这类文件内容格式完全由任务代码自己解析,dbx 只负责按版本上传,是「部署配置」与「业务参数」的解耦点。
5.3 认证配置
dbx 0.8.19 实测支持三种认证方式(未配置任何凭据时 dbx deploy 的真实报错原文列出了全部三种):
Exception: No valid authentication information was provided.
Please use one of the authentication methods: * Via environment variables DATABRICKS_HOST and DATABRICKS_TOKEN
* Via specifying the profile name in the env variable DBX_CLI_PROFILE
* Via providing the profile in the .dbx/project.json file
| 方式 | 配置项 | 适用场景 | 实测备注 |
|---|---|---|---|
| 环境变量 | DATABRICKS_HOST + DATABRICKS_TOKEN | CI/CD 推荐(官方 configure --help 原文) | 实测设置后即可通过认证校验,进入 API 调用阶段 |
| profile 环境变量 | DBX_CLI_PROFILE=<profile 名> | 本机多 profile 切换 | 指向不存在的 profile 时仍报同一认证错误 |
| 项目内 profile | project.json 的 environments.<名>.profile(默认 DEFAULT) | 本地开发(官方原文注明) | ~/.databrickscfg 缺 [DEFAULT] 段时报认证错误 |
~/.databrickscfg 格式(databricks-cli 标准 INI):
[DEFAULT]
host = https://adb-<org-id>.<region-id>.azuredatabricks.net
token = dapi<你的访问令牌>
认证后的真实网络行为(本地实测,凭据指向不可达地址):
DATABRICKS_HOST=http://127.0.0.1:9999 DATABRICKS_TOKEN=dapidemo1234 dbx deploy
实测报错(节选):
ConnectionError: HTTPConnectionPool(host='127.0.0.1', port=80): Max retries
exceeded with url: /api/2.0/workspace/mkdirs (Caused by
NewConnectionError('<urllib3.connection.HTTPConnection object at
0x751b4132d060>: Failed to establish a new connection: [Errno 111] Connection
refused'))
两个有价值的实测结论:
- 第一个 API 调用是
/api/2.0/workspace/mkdirs(初始化 workspace_directory),排障时网络不通/令牌无权限最先在这里暴露; - dbx 会对 host 做规范化并丢弃端口:输入
http://127.0.0.1:9999,实际请求打到127.0.0.1:80(回显 port=80)——给非标准端口的自建网关配 host 时要留意这一点。
⚠️ 注意:
dbx sync命令族不走上述认证体系,它直接读~/.databrickscfg,缺 profile 时报Could not find a databricks-cli config for profile DEFAULT(实测回显),这是 sync 与其他子命令的差异点。
5.4 命令行级参数(默认值实测)
以下默认值取自各子命令 --help 实测输出(完整命令行为见《dbx 0.8.19 常用 CLI 命令详解》):
| 参数 | 所属命令 | 默认值 | 说明 |
|---|---|---|---|
-e/--environment | deploy/launch/execute/destroy/sync | default | 选择 project.json 中的环境 |
--deployment-file | deploy/destroy | None(自动发现 conf 目录下 .json/.yaml/.yml/.j2) | 指定部署文件路径 |
--workflows | deploy/destroy | None | 逗号分隔的工作流名列表 |
--assets-only | deploy | 关闭 | 只上传资产不创建/更新 Job |
--no-package | deploy/execute | 关闭 | 不自动挂载项目 wheel |
--tags | deploy/launch | None | 附加部署标签(可重复多次),仅作用于 artifact_location 不作用于 Job UI Tags |
--branch-name | deploy/launch | None(自动探测 Git 分支) | 分支隔离标识 |
--header/-H | deploy/launch/execute/destroy | None | 附加 API 请求头(可重复),服务主体未加入工作区场景 |
--write-specs-to-file | deploy | None | 把最终作业定义写到本地文件(会覆盖已存在文件) |
--jinja-variables-file | deploy/launch/execute/destroy | None | Jinja 变量文件路径(仅 .j2 部署文件或已开启 inplace jinja 时生效) |
--mode | destroy | all(可选 assets-only/workflows-only) | 删除范围 |
--dry-run | destroy/sync dbfs | 关闭 | 只打印将执行的操作 |
--trace | launch | 关闭 | 跟踪运行直到结束 |
--existing-runs | launch | pass(可选 wait/cancel/pass) | 存在活跃运行时的策略 |
--include-output | launch | None(可选 stdout/stderr) | 把运行输出回显到控制台(Jobs 2.x+) |
--cluster-name/--cluster-id | execute | None | 交互集群定位,二者互斥 |
--task | execute | None | 多任务工作流中指定 task_key |
--parameters | launch/execute | None | JSON 格式参数覆盖 |
--debug | deploy/launch/execute | 关闭 | HTTP 调试输出 |
六、生产配置模板
以下是一份「default 开发 + prod 生产」双环境的实战模板(16GB 内存级开发机即可运行 dbx 本身;Databricks 侧集群规格由 node_type_id 决定,与本机无关),可直接作为 conf/deployment.yml 起步:
custom:
dev-cluster: &dev-cluster
new_cluster:
spark_version: "11.3.x-cpu-ml-scala2.12"
num_workers: 1
node_type_id: "i3.xlarge"
prod-cluster: &prod-cluster
new_cluster:
spark_version: "11.3.x-cpu-ml-scala2.12"
num_workers: 4
node_type_id: "i3.xlarge"
autoscale:
min_workers: 2
max_workers: 8
environments:
default:
workflows:
- name: "myproject-etl-dev"
tasks:
- task_key: "main"
<<: *dev-cluster
python_wheel_task:
package_name: "myproject"
entry_point: "etl"
parameters: [ "--conf-file", "file:fuse://conf/tasks/etl_dev.yml" ]
prod:
workflows:
- name: "myproject-etl-prod"
tasks:
- task_key: "main"
<<: *prod-cluster
python_wheel_task:
package_name: "myproject"
entry_point: "etl"
parameters: [ "--conf-file", "file:fuse://conf/tasks/etl_prod.yml" ]
配套 project.json(生产语义:prod 环境独立 profile、独立 DBFS 资产目录):
{
"environments": {
"default": {
"profile": "DEFAULT",
"storage_type": "mlflow",
"properties": {
"workspace_directory": "/Shared/dbx/myproject",
"artifact_location": "dbfs:/Shared/dbx/projects/myproject"
}
},
"prod": {
"profile": "PROD",
"storage_type": "mlflow",
"properties": {
"workspace_directory": "/Shared/dbx/myproject-prod",
"artifact_location": "dbfs:/Shared/dbx/projects/myproject-prod"
}
}
},
"inplace_jinja_support": false,
"failsafe_cluster_reuse_with_assets": false,
"context_based_upload_for_execute": false
}
要点解读:
- dev/prod 工作流名不同(
-dev/-prod后缀),避免同名 Job 在不同环境互相覆盖引发误触发; - prod 的 profile 单独命名(
PROD),与开发者的[DEFAULT]隔离,CI/CD 上则用DATABRICKS_HOST/DATABRICKS_TOKEN环境变量注入; custom锚点把集群参数集中一处,改 Spark 版本只动两行;inplace_jinja_support保持关闭,环境差异靠显式 YAML 而非模板变量,可读性与可审计性更好;确有强模板诉求时再开启。
七、常见问题
Q1:dbx deploy -e nosuchenv 报 NameError: Environment nosuchenv not found in the project file .dbx/project.json?
-e 取值必须是 project.json environments 的键。先 cat .dbx/project.json 核对环境名,或用 dbx configure --environment <新环境名> ... 新增(此错误在认证之前报出,属于纯本地校验,可直接复现)。
Q2:只想改 profile,为什么 workspace_directory 和 artifact_location 也变了?
重跑 dbx configure 不带 --workspace-dir/--artifact-location 时,dbx 按默认规则重算并覆盖这两个属性(5.1.3 实录)。建议:改 profile 直接编辑 project.json;或每次 configure 都显式带上两个属性参数。
Q3:配置了正确的 YAML,为什么 dbx deploy 不报格式错误而是先报连接/认证错误? deploy 的解析时序是「发现文件 → 认证 → mkdirs 初始化 → 解析」(5.2 时序实测)。部署文件语法错误要在认证与网络均正常后才暴露。
Q4:DATABRICKS_HOST 指向带端口的自建地址,为什么请求打到了 80 端口?
dbx 内部对 host 做 URL 规范化时丢弃端口(5.3 实测回显 port=80)。需要非标准端口时,请在反代层用标准 443/80 收口。
Q5:dbx sync 明明 export 了 DATABRICKS_HOST/TOKEN 还是报 Could not find a databricks-cli config for profile DEFAULT?
sync 命令族只读 ~/.databrickscfg,不支持环境变量认证(5.3 实测)。为 sync 建好 profile 文件即可。
Q6:deployment.yml 里 <<: *basic-static-cluster 是什么语法?
标准 YAML 锚点合并(merge key),与 dbx 无关:&名 定义锚点,<<: *名 把锚点内容并入当前映射,后写的键覆盖锚点同名键。dbx 借此实现集群参数复用(5.2 模板即实测样例)。
Q7:--assets-only 部署的工作流怎么启动?
只能用 dbx launch --from-assets 启动(官方 deploy --help 原文明确:「the only way to launch a workflow that has been deployed with --assets-only option Is to use the dbx launch --from-assets」);这类运行是一次性运行(RunSubmit API),不进 Jobs UI。
八、参考链接
- Databricks 官方文档 dbx 归档章节(部署文件结构权威定义):https://docs.databricks.com/en/archive/dev-tools/dbx/deployment.html
- GitHub 仓库与官方帮助(各选项原文):https://github.com/databrickslabs/dbx
- Jobs API 2.1(workflows/tasks 编排语义来源):https://docs.databricks.com/api/azure/workspace/jobs/create
- MLflow tracking(storage_type 机制背景):https://mlflow.org/docs/latest/tracking.html
本系列其余篇目:《dbx 介绍与选型指南》《dbx Ubuntu 22.04 安装 dbx 0.8.19 指南》《dbx 0.8.19 常用 CLI 命令详解》。