dbx 0.8.19 配置参数详解

逐项详解 dbx 0.8.19 三层配置:.dbx/project.json 环境与行为开关、conf/deployment.yml 工作流定义与 YAML 锚点、认证环境变量与 databrickscfg profile,全部实测回显,含 configure 覆盖陷阱、解析时序与端口规范化等排障实录。

dbxDatabricks数据平台2026/10/23

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 的字段行为如实标注

二、前置条件

  1. dbx 0.8.19 已安装且 dbx --version 可正常输出版本(见《dbx Ubuntu 22.04 安装 dbx 0.8.19 指南》)。
  2. 有一份 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 🔥
  1. 进入 init 生成的项目目录(本文后续命令均在该目录执行):
cd cicd-sample-project

三、参数查看与修改方式

dbx 的配置没有集中式 get 命令,实际可用的查看与修改途径有三种,全部实测有效:

  1. dbx configure 命令:创建/修改 .dbx/project.json,全部选项见 dbx configure --help;
  2. 直接编辑文件:官方帮助原文明确「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 完全合法(本文实测直接编辑后立即生效);
  3. 环境变量:认证相关的 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.jsonenvironments.<名>.profile、storage_type、properties.workspace_directory、properties.artifact_location;顶层 inplace_jinja_support、failsafe_cluster_reuse_with_assets、context_based_upload_for_executedbx configure 或直接编辑
部署配置conf/deployment.ymlbuild 段、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 模板)
认证环境变量 / ~/.databrickscfgDATABRICKS_HOST、DATABRICKS_TOKEN、DBX_CLI_PROFILE;profile 文件 [段名] 下 host/tokenexport 或编辑 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.<名>.profileDEFAULT认证时使用的 ~/.databrickscfg profile 名(官方注明仅建议本地开发使用,CI/CD 走环境变量)API 认证
environments.<名>.storage_typemlflow部署资产的存储后端;dbx 借 MLflow tracking 机制存储 wheel 与文件资产资产上传
properties.workspace_directory/Shared/dbx/<项目名>Databricks 工作区内的目录,存放 MLflow experiment 与工作流相关对象deploy 时自动 workspace/mkdirs 创建(实测报错可见该 API 调用)
properties.artifact_locationdbfs:/Shared/dbx/projects/<项目名>DBFS 路径,存放按版本上传的 wheel 与文件资产deploy 时上传
inplace_jinja_supportfalse允许在 deployment.yml 内直接写 Jinja2 表达式部署文件解析
failsafe_cluster_reuse_with_assetsfalseassets 模式 launch 时对共享 job cluster 定义的容错复用行为launch
context_based_upload_for_executefalseexecute 时改用执行上下文上传代码(--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 的定位名
nameworkflow工作流名,也决定 Databricks Jobs UI 中的作业名
tasks[].task_keytask任务键,多任务工作流中 execute 需用 --task 指定
tasks[].depends_ontask任务依赖数组(Jobs API 2.1 编排语义)
tasks[].spark_python_tasktask以 spark_python 脚本方式执行,python_file 指向项目内文件
tasks[].python_wheel_tasktask以 wheel 入口点执行:package_name 对应 setup.py 的包名,entry_point 对应 setup.py console_scripts 中的入口(模板 setup.py 实测定义 etl = cicd_sample_project.tasks.sample_etl_task:entrypoint)
tasks[].notebook_tasktaskNotebook 任务,notebook_path 指向工作区内路径(配合 Databricks Repos 使用)
job_clusters / job_cluster_keyworkflow/task多任务共享集群定义;单任务工作流可直接在 task 内写 new_cluster
deployment_config.no_packagetask设为 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_TOKENCI/CD 推荐(官方 configure --help 原文)实测设置后即可通过认证校验,进入 API 调用阶段
profile 环境变量DBX_CLI_PROFILE=<profile 名>本机多 profile 切换指向不存在的 profile 时仍报同一认证错误
项目内 profileproject.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'))

两个有价值的实测结论:

  1. 第一个 API 调用是 /api/2.0/workspace/mkdirs(初始化 workspace_directory),排障时网络不通/令牌无权限最先在这里暴露;
  2. 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/--environmentdeploy/launch/execute/destroy/syncdefault选择 project.json 中的环境
--deployment-filedeploy/destroyNone(自动发现 conf 目录下 .json/.yaml/.yml/.j2)指定部署文件路径
--workflowsdeploy/destroyNone逗号分隔的工作流名列表
--assets-onlydeploy关闭只上传资产不创建/更新 Job
--no-packagedeploy/execute关闭不自动挂载项目 wheel
--tagsdeploy/launchNone附加部署标签(可重复多次),仅作用于 artifact_location 不作用于 Job UI Tags
--branch-namedeploy/launchNone(自动探测 Git 分支)分支隔离标识
--header/-Hdeploy/launch/execute/destroyNone附加 API 请求头(可重复),服务主体未加入工作区场景
--write-specs-to-filedeployNone把最终作业定义写到本地文件(会覆盖已存在文件)
--jinja-variables-filedeploy/launch/execute/destroyNoneJinja 变量文件路径(仅 .j2 部署文件或已开启 inplace jinja 时生效)
--modedestroyall(可选 assets-only/workflows-only)删除范围
--dry-rundestroy/sync dbfs关闭只打印将执行的操作
--tracelaunch关闭跟踪运行直到结束
--existing-runslaunchpass(可选 wait/cancel/pass)存在活跃运行时的策略
--include-outputlaunchNone(可选 stdout/stderr)把运行输出回显到控制台(Jobs 2.x+)
--cluster-name/--cluster-idexecuteNone交互集群定位,二者互斥
--taskexecuteNone多任务工作流中指定 task_key
--parameterslaunch/executeNoneJSON 格式参数覆盖
--debugdeploy/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
}

要点解读:

  1. dev/prod 工作流名不同(-dev/-prod 后缀),避免同名 Job 在不同环境互相覆盖引发误触发;
  2. prod 的 profile 单独命名(PROD),与开发者的 [DEFAULT] 隔离,CI/CD 上则用 DATABRICKS_HOST/DATABRICKS_TOKEN 环境变量注入;
  3. custom 锚点把集群参数集中一处,改 Spark 版本只动两行;
  4. 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。

八、参考链接

  1. Databricks 官方文档 dbx 归档章节(部署文件结构权威定义):https://docs.databricks.com/en/archive/dev-tools/dbx/deployment.html
  2. GitHub 仓库与官方帮助(各选项原文):https://github.com/databrickslabs/dbx
  3. Jobs API 2.1(workflows/tasks 编排语义来源):https://docs.databricks.com/api/azure/workspace/jobs/create
  4. 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 命令详解》。