持续集成和持续交付(CI/CD)是指使用自动化管道在短时间内开发和交付软件的过程。 CI/CD 在软件开发中很常见,数据工程和数据科学越来越必要。 通过自动化代码的生成、测试和部署,开发团队能够比手动流程更可靠地交付发布。
Databricks 提供了用于开发 CI/CD 管道的工具,这些管道能够适应不同组织的软件开发生命周期中的独特方法,这些方法可能会略有不同。 本页提供有关 Databricks 上 CI/CD 管道的可用工具的信息。 有关 CI/CD 建议和最佳做法的详细信息,请参阅 Databricks 上的最佳做法和建议的 CI/CD 工作流。
有关 Azure Databricks 上机器学习项目的 CI/CD 概述,请参阅 Databricks 如何支持用于机器学习的 CI/CD?
高级流程
Azure Databricks CI/CD 管道的常见流为:
版本:将 Azure Databricks 代码和笔记本存储在 Git 等版本控制系统中。 这样,就可以跟踪一段时间内的更改,并与其他团队成员协作。
- 在将更改提交到 Git 存储库之前,单个用户使用 Git 文件夹创作和测试更改。 请参阅 包含 Databricks Git 文件夹(Repos)的 CI/CD。
- (可选)配置 捆绑包 Git 设置。
代码:在工作区的 Azure Databricks 笔记本中或使用 IDE 在本地开发代码和单元测试。
- 使用 Lakeflow 管道编辑器 在工作区中开发管道。
- 使用 Databricks Visual Studio Code 扩展 开发和部署对 Azure Databricks 工作区的本地更改。
生成:使用 Databricks 资产捆绑包设置在部署过程中自动生成某些项目。
- 配置捆绑包配置 项目 映射。
- 使用 Databricks Labs pylint 插件扩展的 Pylint 有助于强制实施编码标准并检测 Databricks 笔记本和应用程序代码中的 bug。
部署:使用包含 Azure DevOps、 GitHub Actions 或 Jenkins 等工具的 Databricks 资产捆绑包将更改部署到 Azure Databricks 工作区。
- 使用捆绑 部署模式配置部署。
- 有关 Databricks GitHub Actions 示例,请参阅 GitHub Actions。
测试:开发和运行自动测试以验证代码更改。
- 使用 pytest 等工具来测试集成。
运行:将 Databricks CLI 与 Databricks 资产捆绑包配合使用,在 Azure Databricks 工作区中自动运行。
- 使用 databricks bundle run 运行资源。
监视:使用 作业监视等工具监视 Azure Databricks 中的代码和生产工作负荷的性能。 这有助于识别并解决生产环境中出现的任何问题。
可用工具
以下工具支持 CI/CD 核心原则:对所有文件进行版本控制并统一资产管理、将基础结构定义为代码、隔离环境、自动测试,以及监视和自动回滚。
| 面积 | 对于以下需求,请使用这些工具… |
|---|---|
| Databricks 资产捆绑包 | 使用 CI/CD 最佳实践和流程以编程方式定义、部署和运行资源,包括 Lakeflow 作业、Lakeflow 声明性管道和 MLOps Stacks。 |
| Databricks Terraform 提供者 | 使用 Terraform 预配和管理 Databricks 工作区和基础结构。 |
| GitHub 活动 | 在 CI/CD 流中包含为 Azure Databricks 开发的 GitHub Action。 |
| 将 CI/CD 与 Azure Databricks 上的 Jenkins 配合使用 | 开发一个在 Azure Databricks 上使用 Jenkins 的 CI/CD 管道。 |
| 使用 Apache Airflow 协调 Lakeflow 作业 | 管理和计划使用 Apache Airflow 的数据管道。 |
| CI/CD 的服务主体 | 将服务主体(而不是用户)与 CI/CD 配合使用。 |
Databricks 资产捆绑包
Databricks 资产捆绑包 是 Databricks 上 CI/CD 的建议方法。 使用 Databricks 资产捆绑包描述 Databricks 资源(如作业和管道)作为源文件,并将它们与其他资产捆绑在一起,以提供可部署项目的端到端定义。 这些文件捆绑包可以进行源代码管理,可以使用外部 CI/CD 自动化(如 Github Actions)来触发部署。
捆绑包包括许多功能,例如自定义模板,用于在整个组织中强制实施一致性和最佳做法,以及为许多 Databricks 资源部署代码文件和配置的全面支持。 需要了解 捆绑配置语法 才能创作捆绑包。
有关如何在 CI/CD 中使用捆绑包的建议,请参阅 Databricks 上的最佳做法和建议的 CI/CD 工作流。
源代码管理的其他工具
作为使用 Databricks 资产捆绑包应用完整 CI/CD 的替代方法,Databricks 提供仅源代码管理和部署代码文件和笔记本的选项。
Git 文件夹:Git 文件夹可用于反映远程 Git 存储库的状态。 可以为生产创建 git 文件夹来管理源代码管理的源文件和笔记本。 然后手动将 Git 文件夹拉取到最新状态,或者使用外部 CI/CD 工具(如 GitHub Actions)在合并时或无权访问外部 CI/CD 管道时拉取 Git 文件夹。 此方法适用于外部业务流程协调程序(如 Airflow),但请注意,只有代码文件(如笔记本和仪表板草稿)位于源代码管理中。 运行 Git 文件夹中资产的作业或管道的配置以及发布仪表板的配置不在源代码管理中。
包含作业的 Git:如果只需要作业代码文件的源代码管理,则可以将某些作业类型配置为使用远程 Git 存储库作为源。 作业运行开始时,Databricks 会对远程存储库进行快照提交,并确保作业的所有运行过程都基于同一版本的代码。 此方法仅支持有限的作业任务。 此外,只有代码文件(如笔记本和其他文件)位于源代码管理中。 作业配置(如任务序列、计算和计划)不受源代码管理,因此此方法不太适用于多环境跨工作区部署。