什么是 Databricks 资产捆绑包?
Databricks 资产捆绑包 (DAB) 是可以方便采用数据和 AI 项目的软件工程最佳做法(包括源代码管理、代码评审、测试以及持续集成和交付 (CI/CD))的工具。 使用捆绑包,可以将作业、管道和笔记本等 Databricks 资源描述为源文件。 这些源文件提供项目的端到端定义,包括如何生成、测试和部署项目,这样,在活跃开发期间可以更容易实现项目协作。
捆绑包提供了一种将元数据与项目的源文件一起包含的方法。 使用捆绑包部署项目时,此元数据将用于预配基础结构和其他资源。 然后,项目的源文件和元数据集合将作为单个捆绑包部署到目标环境。 捆绑包包括下列部分:
- 所需的云基础结构和工作区配置
- 包含业务逻辑的源文件,例如笔记本和 Python 文件
- Databricks 资源的定义和设置,例如 Azure Databricks 作业、增量实时表管道、模型服务终结点、MLflow 试验和 MLflow 注册的模型
- 单元测试和集成测试
下图提供了使用捆绑包的开发和 CI/CD 管道的概要视图:
应在何时使用 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 身份验证,请执行以下操作:
通过对每个目标工作区运行以下命令,使用 Databricks CLI 在本地启动 OAuth 令牌管理。
在以下命令中,将
<workspace-url>
替换为 Azure Databricks 每工作区 URL,例如https://adb-1234567890123456.7.azuredatabricks.net
。databricks auth login --host <workspace-url>
Databricks CLI 会提示将输入的信息保存为 Azure Databricks 配置文件。 按
Enter
接受建议的配置文件名称,或输入新的或现有的配置文件的名称。 任何具有相同名称的现有配置文件都会被输入的信息覆盖。 可以使用配置文件在多个工作区之间快速切换身份验证上下文。若要获取任何现有配置文件的列表,请在单独的终端或命令提示符中使用 Databricks CLI 来运行
databricks auth profiles
命令。 若要查看特定配置文件的现有设置,请运行databricks auth env --profile <profile-name>
命令。在 Web 浏览器中,按照屏幕上的说明登录到 Azure Databricks 工作区。
若要查看配置文件的当前 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 validate
、databricks bundle deploy
、databricks bundle run
或databricks bundle destroy
。 请参阅 Databricks 资产捆绑包开发。 - 作为捆绑配置文件顶级
workspace
映射中profile
映射的值(尽管 Databricks 建议使用设置为 Azure Databricks 工作区 URL 的host
映射而不是profile
映射,因为它使捆绑配置文件更易于移植)。 请参阅工作区中profile
映射的覆盖范围。 - 如果配置文件的名称是
DEFAULT
,则当命令行选项-p <profile-name>
或profile
(或host
)映射未指定时,会默认使用它。
对于 OAuth M2M 身份验证,请执行以下操作:
完成 OAuth M2M 身份验证设置说明。 请参阅使用 OAuth (OAuth M2M) 通过服务主体对 Azure Databricks 的访问进行身份验证。
通过以下方式之一在目标计算资源上安装 Databricks CLI:
- 若要实时在计算资源上手动安装 Databricks CLI,请参阅安装或更新 Databricks CLI。
- 若要使用 GitHub Actions 在 GitHub 虚拟机上自动安装 Databricks CLI,请参阅 GitHub 中的 setup-cli。
- 若要使用其他 CI/CD 系统在虚拟机上自动安装 Databricks CLI,请参阅 CI/CD 系统提供商的文档,以及安装或更新 Databricks CLI。
在计算资源上设置以下环境变量,如下所示:
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 中的捆绑包示例存储库中找到。
后续步骤
- 创建一个捆绑包,以将笔记本部署到 Azure Databricks 工作区,然后将部署的笔记本作为 Azure Databricks 作业运行。 请参阅使用 Databricks 资产捆绑包在 Azure Databricks 上开发作业。
- 创建一个捆绑包,以将笔记本部署到 Azure Databricks 工作区,然后将部署的笔记本作为增量实时表管道运行。 请参阅使用 Databricks 资产捆绑包开发增量实时表管道。
- 创建用于部署和运行 MLOps Stack 的捆绑包。 请参阅适用于 MLOps 堆栈的 Databricks 资产捆绑包。
- 将捆绑包添加到 GitHub 中的 CI/CD(持续集成/持续部署)工作流。 请参阅使用 Databricks 资产捆绑包和 GitHub Actions 运行 CI/CD 工作流。
- 创建一个捆绑包,用于生成、部署和调用 Python wheel 文件。 请参阅使用 Databricks 资产捆绑包开发 Python wheel 文件。
- 创建自定义模板,你和其他人可以使用该模板创建捆绑包。 自定义模板可能包括默认权限、服务主体和自定义 CI/CD 配置。 请参阅 Databricks 资产捆绑包项目模板。
- 从 dbx 迁移到 Databricks 资产捆绑包。 请参阅从 dbx 迁移到捆绑包。
- 了解针对 Databricks 资产捆绑包发布的最新主要新功能。 请参阅 Databricks 资产捆绑包功能发行说明。