什么是 Databricks 资产捆绑包?

Databricks 资产捆绑包 (DAB) 是可以方便采用数据和 AI 项目的软件工程最佳做法(包括源代码管理、代码评审、测试以及持续集成和交付 (CI/CD))的工具。 使用捆绑包,可以将作业、管道和笔记本等 Databricks 资源描述为源文件。 这些源文件提供项目的端到端定义,包括如何生成、测试和部署项目,这样,在活跃开发期间可以更容易实现项目协作。

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

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

下图提供了使用捆绑包的开发和 CI/CD 管道的概要视图:

Databricks 资产捆绑包概述

应在何时使用 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 CLI》。

Databricks 资产捆绑在 Databricks CLI 版本 0.218.0 或更高版本中可用。 若要查找已安装的 Databricks CLI 版本,请运行以下命令:

databricks --version

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

身份验证

Azure 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.azuredatabricks.net

    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)映射指定时,会默认使用它。

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

  1. 完成 OAuth M2M 身份验证设置说明。 请参阅使用 OAuth (OAuth M2M) 通过服务主体对 Azure Databricks 的访问进行身份验证

  2. 通过以下方式之一在目标计算资源上安装 Databricks CLI:

    • 若要实时在计算资源上手动安装 Databricks CLI,请参阅安装或更新 Databricks CLI
    • 若要使用 GitHub Actions 在 GitHub 虚拟机上自动安装 Databricks CLI,请参阅 GitHub 中的 setup-cli
    • 若要使用其他 CI/CD 系统在虚拟机上自动安装 Databricks CLI,请参阅 CI/CD 系统提供商的文档,以及安装或更新 Databricks CLI
  3. 在计算资源上设置以下环境变量,如下所示:

    • DATABRICKS_HOST,设置为 Azure Databricks 每工作区 URL,例如 https://adb-1234567890123456.7.azuredatabricks.net
    • DATABRICKS_CLIENT_ID,设置为 Azure Databricks 服务主体的应用程序 ID 值
    • DATABRICKS_CLIENT_SECRET,设置为 Azure Databricks 服务主体的 OAuth 机密值

    若要设置这些环境变量,请参阅适用于目标计算资源的操作系统或 CI/CD 系统的文档。

开发第一个 Databricks 资产捆绑包

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

databricks bundle init

创建捆绑包是捆绑包生命周期中的第一步。 第二步是开发捆绑包,其中一个关键要素是在 databricks.yml 和资源配置文件中定义捆绑包设置和资源。 有关捆绑包配置的信息,请参阅 Databricks 资产捆绑包配置

提示

捆绑包配置示例可以在捆绑包配置示例GitHub 中的捆绑包示例存储库中找到。

后续步骤