什么是 Databricks 资产捆绑包?

Databricks 资产捆绑包 (DAB) 是简化 Databricks 平台复杂数据、分析和 ML 项目开发的新工具。 通过捆绑包,可以轻松地在活动开发期间管理复杂的项目,其方法是利用单个简洁的声明性 YAML 语法向软件开发工作流提供 CI/CD 功能。 通过使用捆绑包自动执行项目的测试、部署和配置管理,可以在组织中将软件最佳做法作为模板化项目进行推广时减少错误。

重要

此功能目前以公共预览版提供。

捆绑提供了一种将元数据与项目源文件一起包含的方式。 使用捆绑包部署项目时,此元数据将用于预配基础结构和其他资源。 然后,项目的源文件和元数据集合将作为单个捆绑包部署到目标环境。

捆绑包包括下列部分:

  • 所需的云基础结构和工作区配置
  • 包含业务逻辑的源文件,例如笔记本和 Python 文件
  • Databricks 资源的定义和设置,例如 Azure Databricks 作业、增量实时表管道、模型服务终结点、MLflow 试验和 MLflow 注册的模型
  • 单元测试和集成测试

应在何时使用 Databricks 资产捆绑包?

Databricks 资产捆绑包是一种基础结构即代码 (IaC) 方法,用于管理 Databricks 项目。 如果要管理的复杂项目必须涉及多个参与者和自动化,并且需要进行持续集成和部署 (CI/CD),则可使用它们。 由于捆绑包是通过与源代码一起创建和维护的 YAML 模板与文件来定义和管理的,因此它们会很好地映射到 IaC 是适当方法的方案。

捆绑包的一些理想方案包括:

  • 在基于团队的环境中开发数据、分析和 ML 项目。 捆绑包可帮助你高效地组织和管理各种源文件。 这可确保顺畅协作和简化的过程。
  • 更快地循环访问 ML 问题。 使用从一开始就遵循生产最佳做法的 ML 项目管理 ML 管道资源(例如训练和批处理推理作业)。
  • 通过创作包含默认权限、服务主体和 CI/CD 配置的自定义捆绑模板,为新项目设置组织标准。
  • 法规合规性:在法规合规性非常重要的行业,捆绑包可以帮助维护代码和基础结构工作的版本历史记录。 这有助于治理,并确保满足必要的合规性标准。

Databricks 资产捆绑包的工作原理是什么?

捆绑包元数据是使用 YAML 文件定义的,该文件指定了 Databricks 项目的生成工件、资源和配置。 可以手动创建此 YAML 文件,也可以使用捆绑包模板生成一个。 然后,可将 Databricks CLI 用于使用这些捆绑 YAML 文件验证、部署和运行捆绑包。 可以直接从 IDE、终端或在 Databricks 中部署和运行捆绑包项目。 本文将介绍如何使用 Databricks CLI。

捆绑包可以手动创建,也可以基于模板创建。 Databricks CLI 为简单用例提供了默认模板,但对于更具体或复杂的作业,可以创建自定义捆绑模板来实现团队的最佳做法,并保持常见配置一致。

有关用于表示 Databricks 资产捆绑包的配置 YAML 的更多详细信息,请参阅 Databricks 资产捆绑包配置

配置要使用捆绑包的环境

使用 Databricks CLI 从命令行轻松部署捆绑包。 可以通过运行以下命令来检查是否已安装 Databricks CLI 以及正在使用的当前版本:

databricks --version

注意

需要使用 Databricks CLI 版本 0.205.2 或更高版本。 要安装 Databricks CLI,请参阅《安装或更新 Databricks CLI》。

安装 Databricks CLI 后,验证是否已正确配置远程 Databricks 工作区。 捆绑包要求启用工作区文件功能,因为此功能支持使用 Databricks Notebooks 以外的文件,例如 .py.yml 文件。 如果使用的是 Databricks Runtime 版本 11.2(或更高版本),则默认情况下应已启用此功能。

身份验证

Azure Databricks 提供了多种身份验证方法。 Databricks 建议使用以下方法之一进行身份验证:

  • 对于有人参与的身份验证方案,例如,使用 Web 浏览器在 Databricks CLI 提示时登录到目标 Azure Databricks 工作区的手动工作流,请使用 OAuth 用户到计算机 (U2M)身份验证。 此方法非常适合试验 Databricks 资产捆绑包入门教程或捆绑包的快速开发。
  • 对于无人参与的身份验证方案,例如完全自动化的工作流,在这种情况下,你没有机会使用 Web 浏览器登录到目标 Azure Databricks 工作区,请使用 OAuth 计算机到计算机 (M2M) 身份验证。 此方法需要使用 Azure Databricks 服务主体,非常适合将 Databricks 资产捆绑包与 CI/CD 系统(例如 GitHub)一起使用。

对于 OAuth U2M 身份验证,请执行以下操作

  1. 通过对每个目标工作区运行以下命令,使用 Databricks CLI 在本地启动 OAuth 令牌管理。

    在以下命令中,将 <workspace-url> 替换为 Azure Databricks 每工作区 URL,例如 https://adb-1234567890123456.7.databricks.azure.cn

    databricks auth login --host <workspace-url>
    
  2. Databricks CLI 会提示将输入的信息保存为 Azure Databricks 配置文件。 按 Enter 接受建议的配置文件名称,或输入新的或现有的配置文件的名称。 任何具有相同名称的现有配置文件都会被输入的信息覆盖。 可以使用配置文件在多个工作区之间快速切换身份验证上下文。

    若要获取任何现有配置文件的列表,请在单独的终端或命令提示符中使用 Databricks CLI 来运行 databricks auth profiles 命令。 要查看特定配置文件的现有设置,请运行命令 databricks auth env --profile <profile-name>

  3. 在 Web 浏览器中,按照屏幕上的说明登录到 Azure Databricks 工作区。

  4. 要查看配置文件的当前 OAuth 令牌值和令牌即将过期的时间戳,请运行以下命令之一:

    • databricks auth token --host <workspace-url>
    • databricks auth token -p <profile-name>
    • databricks auth token --host <workspace-url> -p <profile-name>

    如果你有多个配置文件有相同的 --host 值,则可能需要同时指定 --host-p 选项,以便 Databricks CLI 找到正确的、匹配的 OAuth 令牌信息。

每当验证、部署、运行或销毁捆绑包时,都可以使用以下一种或多种方法使用此配置文件的名称:

  • 使用命令行选项 -p <profile-name>,追加到命令 databricks bundle validatedatabricks bundle deploydatabricks bundle rundatabricks bundle destroy。 请参阅 Databricks 资产捆绑包开发工作流
  • 作为捆绑配置文件顶级 workspace 映射中 profile 映射的值(尽管 Databricks 建议使用设置为 Azure Databricks 工作区 URL 的 host 映射,而不是 profile 映射,因为它使捆绑配置文件更易于移植)。 请参阅工作区profile 映射的覆盖范围。
  • 如果配置文件的名称是 DEFAULT,当指定命令行选项 -p <profile-name>profile(或 host)映射时,将默认使用它。

开发第一个 Databricks 资产捆绑包

启动捆绑包开发的最快方法是使用模板。 使用 Databricks CLI bundle init 命令创建第一个捆绑项目,而无需任何选项。 这提供了 Databricks 提供的默认捆绑模板的选择,并询问一系列初始化项目变量的问题。

databricks bundle init

组织还可以创建自定义捆绑模板来定义自己的标准。 这些标准可能包括默认权限、服务主体和自定义 CI/CD 配置。 请参阅 Databricks 资产捆绑包模板

初始化项目后,请使用 bundle validate 命令在将捆绑包部署到工作区之前对其进行验证。

databricks bundle validate

通常,会在具有 IDE 和 Databricks CLI 版本 0.205 或更高版本的本地开发计算机上创建捆绑包。 借助这些工具,可以创建、验证、部署和运行捆绑包。 请参阅 Databricks 资产捆绑包开发工作流

将捆绑包添加到 Git 后,可以使用 Databricks Git 文件夹集成在 Azure Databricks 工作区中编辑捆绑包。 但是,不能从工作区测试或部署捆绑包。 相反,可以使用本地 IDE 进行测试,并使用 CI/CD 进行部署。

后续步骤

常见任务

使用以下文章完成 Databricks 资产捆绑包的常见任务。

项目 在想要执行以下操作时使用此文章…
Databricks 资产捆绑包开发工作流 通过创作 databricks.yml 文件并使用 Databricks CLI 运行命令 databricks bundle validatedatabricks bundle deploydatabricks bundle run,了解用于创建、验证、部署和运行捆绑包的工作流。
Databricks 资产捆绑包配置 创建捆绑包的 databricks.yml 文件和其他相关捆绑配置文件,这些配置文件需符合捆绑配置的 YAML 语法。
Databricks 资产捆绑包的身份验证 为 Azure Databricks 身份验证设置一个捆绑项目。
使用 Databricks 资产捆绑包在 Azure Databricks 上开发作业 为 Azure Databricks 作业创建、部署和运行捆绑包。
使用 Databricks 资产捆绑包开发增量实时表管道 为 Delta Live Tables 管道创建、部署和运行捆绑包。
适用于 MLOps Stacks 的 Databricks 资产捆绑包 为 MLOps 堆栈创建、部署和运行捆绑包。
Databricks 资产捆绑库依赖项 安装捆绑包需要在任何相关的 Azure Databricks 群集上运行的库。
Databricks 资产捆绑包部署模式 使用捆绑部署模式(例如 developmentproduction)自动启用或禁用常见部署行为,例如暂停或取消暂停相关计划和触发器。
Databricks 资产捆绑包模板 使用模板可以更快、更轻松地创建特定类型的捆绑包,并生成更一致且可重复的结果。
为 Databricks 资产捆绑包中的资源设置权限 对特定捆绑资源的用户、组和服务主体应用精细的访问权限级别。
在 Databricks 资产捆绑包中动态定义项目设置 合并或替代捆绑包中项目的特定设置。
使用 Databricks 资产捆绑包和 GitHub Actions 运行 CI/CD 工作流 部署或运行捆绑包以响应特定的 GitHub 工作流事件,例如拉取请求或合并。
替代 Databricks 资产捆绑包中的群集设置 合并或替代捆绑包中群集的特定设置。
将任务添加到 Databricks 资产捆绑包中的作业 将任务添加到捆绑包中的作业。
替代 Databricks 资产捆绑包中的作业任务设置 合并或替代捆绑包中作业任务的特定设置。
使用 Databricks 资产捆绑包开发 Python wheel 文件 在捆绑包中生成、部署和调用 Python wheel 文件。

更多资源