Azure Databricks 上的 CI/CD

持续集成和持续交付(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 管道的常见流为:

  1. 版本:将 Azure Databricks 代码和笔记本存储在 Git 等版本控制系统中。 这样,就可以跟踪一段时间内的更改,并与其他团队成员协作。
  2. 代码:在工作区的 Azure Databricks 笔记本中或使用 IDE 在本地开发代码和单元测试。
  3. 生成:使用 Databricks 资产捆绑包设置在部署过程中自动生成某些项目。
  4. 部署:使用包含 Azure DevOpsGitHub ActionsJenkins 等工具的 Databricks 资产捆绑包将更改部署到 Azure Databricks 工作区。
  5. 测试:开发和运行自动测试以验证代码更改。
    • 使用 pytest 等工具来测试集成。
  6. 运行:将 Databricks CLI 与 Databricks 资产捆绑包配合使用,在 Azure Databricks 工作区中自动运行。
  7. 监视:使用 作业监视等工具监视 Azure Databricks 中的代码和生产工作负荷的性能。 这有助于识别并解决生产环境中出现的任何问题。

可用工具

以下工具支持 CI/CD 核心原则:对所有文件进行版本控制并统一资产管理、将基础结构定义为代码、隔离环境、自动测试,以及监视和自动回滚。

面积 对于以下需求,请使用这些工具…
Databricks 资产捆绑包 使用 CI/CD 最佳实践和流程,以编程方式定义、部署和运行资源,包括 Lakeflow 作业、Lakeflow Spark 声明性管道以及 MLOps 堆栈。
Databricks Terraform 提供者 使用 Terraform 预配和管理 Databricks 工作区和基础结构。
使用 Azure DevOps 在 Azure Databricks 上进行持续集成和交付 为 Azure Databricks 开发使用 Azure DevOps 的 CI/CD 管道。
在 Azure Databricks 上使用 Azure DevOps 进行身份验证 使用 Azure DevOps 进行身份验证。
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 配合使用。
通过 OAuth 令牌联邦对 Azure Databricks 的访问进行身份验证 采用工作负载身份联合用于 CI/CD 身份验证,可以省去 Databricks 密钥管理,这使其成为对 Databricks 进行身份验证的最安全方式。

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)在合并时拉取 Git 文件夹。 当无法访问外部 CI/CD 管道时,请使用此方法。

    此方法适用于外部业务流程协调程序(如 Airflow),但请注意,只有代码文件(如笔记本和仪表板草稿)位于源代码管理中。 运行 Git 文件夹中资产的作业或管道的配置以及发布仪表板的配置不在源代码管理中。

  • 包含作业的 Git:使用包含作业的 Git,可以配置某些作业类型以使用远程 Git 存储库作为代码文件的源。 作业运行开始时,Databricks 将创建存储库的快照,并针对该版本运行所有任务。 此方法仅支持有限的作业任务,并且仅对代码文件(笔记本和其他文件)进行源代码管理。 作业配置(如任务序列、计算设置和计划)不受源代码管理,因此此方法不太适用于多环境跨工作区部署。