什么是 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 身份验证,请执行以下操作:
通过对每个目标工作区运行以下命令,使用 Databricks CLI 在本地启动 OAuth 令牌管理。
在以下命令中,将
<workspace-url>
替换为 Azure Databricks 每工作区 URL,例如https://adb-1234567890123456.7.databricks.azure.cn
。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
)映射时,将默认使用它。
开发第一个 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 进行部署。
后续步骤
- 创建一个捆绑包,以将笔记本部署到 Azure Databricks 工作区,然后将部署的笔记本作为 Azure Databricks 作业运行。 请参阅使用 Databricks 资产捆绑包在 Azure Databricks 上开发作业。
- 创建一个捆绑包,以将笔记本部署到 Azure Databricks 工作区,然后将部署的笔记本作为增量实时表管道运行。 请参阅使用 Databricks 资产捆绑包开发 Delta Live Tables 管道。
- 创建用于部署和运行 MLOps Stack 的捆绑包。 请参阅适用于 MLOps 堆栈的 Databricks 资产捆绑包。
- 将捆绑包添加到 GitHub 中的 CI/CD(持续集成/持续部署)工作流。 请参阅使用 Databricks 资产捆绑包和 GitHub Actions 运行 CI/CD 工作流。
- 创建一个捆绑包,用于生成、部署和调用 Python wheel 文件。 请参阅使用 Databricks 资产捆绑包开发 Python wheel 文件。
- 创建自定义模板,你和其他人可以使用该模板创建捆绑包。 请参阅 Databricks 资产捆绑包模板。
常见任务
使用以下文章完成 Databricks 资产捆绑包的常见任务。
项目 | 在想要执行以下操作时使用此文章… |
---|---|
Databricks 资产捆绑包开发工作流 | 通过创作 databricks.yml 文件并使用 Databricks CLI 运行命令 databricks bundle validate 、databricks bundle deploy 和 databricks 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 资产捆绑包部署模式 | 使用捆绑部署模式(例如 development 和 production )自动启用或禁用常见部署行为,例如暂停或取消暂停相关计划和触发器。 |
Databricks 资产捆绑包模板 | 使用模板可以更快、更轻松地创建特定类型的捆绑包,并生成更一致且可重复的结果。 |
为 Databricks 资产捆绑包中的资源设置权限 | 对特定捆绑资源的用户、组和服务主体应用精细的访问权限级别。 |
在 Databricks 资产捆绑包中动态定义项目设置 | 合并或替代捆绑包中项目的特定设置。 |
使用 Databricks 资产捆绑包和 GitHub Actions 运行 CI/CD 工作流 | 部署或运行捆绑包以响应特定的 GitHub 工作流事件,例如拉取请求或合并。 |
替代 Databricks 资产捆绑包中的群集设置 | 合并或替代捆绑包中群集的特定设置。 |
将任务添加到 Databricks 资产捆绑包中的作业 | 将任务添加到捆绑包中的作业。 |
替代 Databricks 资产捆绑包中的作业任务设置 | 合并或替代捆绑包中作业任务的特定设置。 |
使用 Databricks 资产捆绑包开发 Python wheel 文件 | 在捆绑包中生成、部署和调用 Python wheel 文件。 |