Azure Databricks 上的 CI/CD 是什么?

本文介绍 Databricks 上的 CI/CD。 持续集成和持续交付 (CI/CD) 指的是,通过使用自动化管道,在较短且频繁的周期中开发和交付软件的过程。 CI/CD 在软件开发中很常见,数据工程和数据科学也越来越需要采用 CI/CD。 与仍在数据工程和数据科学团队中普遍使用的手动过程相比,通过自动执行代码的生成、测试和部署,开发团队能够更可靠地交付版本。

Azure Databricks 建议为 CI/CD 使用 Databricks 资产捆绑包,以便针对 Azure Databricks 平台开发和部署复杂的数据、分析和 ML 项目。 通过捆绑包,可以轻松管理许多自定义配置,并将项目的生成、测试和部署自动化到 Azure Databricks 开发、过渡和生产工作区。

有关 Azure 上机器学习项目的 CI/CD 概述,请参阅Databricks 如何支持机器学习的 CI/CD?

Azure Databricks 上的 CI/CD 管道中有哪些内容?

可以使用 Databricks 资产捆绑包来定义和以编程方式管理 Azure Databricks CI/CD 实现,它通常包括:

  • 笔记本:Azure Databricks 笔记本通常是数据工程和数据科学工作流的关键部分。 可以对笔记本使用版本控制,还可以将其作为 CI/CD 管道的一部分对其进行验证和测试。 可以对笔记本运行自动测试,以检查它们是否按预期运行。
  • :管理运行已部署代码所需的库依赖项。 对库使用版本控制,并将其包含在自动测试和验证中。
  • 工作流Databricks 工作流由允许使用笔记本或 Spark 作业计划和运行自动化任务的作业组成。
  • 数据管道:还可以使用增量实时表(Databricks 中用于声明数据管道的框架)在 CI/CD 自动化中包含数据管道。
  • 基础结构:基础结构配置包括针对目标环境的群集、工作区和存储的定义和预配信息。 可将基础结构更改作为 CI/CD 管道的一部分进行验证和测试,以确保它们一致且无错误。

Azure Databricks 上的 CI/CD 步骤

Azure Databricks CI/CD 管道的典型流包括以下步骤:

  1. 存储:将 Azure Databricks 代码和笔记本存储在版本控制系统(如 Git)中。 通过此操作,可以跟踪随时间推移进行的更改,并与其他团队成员开展协作。 请参阅使用 Git 和 Databricks Git 文件夹 (Repos) 的 CI/CD 技术捆绑包 Git 设置
  2. 代码:在工作区的 Azure Databricks 笔记本中或使用外部 IDE 在本地开发代码和单元测试。 Azure Databricks 提供了 Visual Studio Code 扩展,可让你轻松地进行开发并将更改部署到 Azure Databricks 工作区。
  3. 生成:使用 Databricks 资产捆绑包设置在部署过程中自动生成某些项目。 请参阅项目
  4. 部署:使用 Databricks 资产捆绑包以及 Azure DevOps、Jenkins 或 GitHub Actions 等工具,将更改部署到 Azure Databrickss 工作区。 请参阅 Databricks 资产捆绑包部署模式
  5. 测试:开发并运行自动化测试,以使用 pytest 等工具验证代码更改。
  6. 运行:将 Databricks CLI 与 Databricks 资产捆绑包结合使用,以自动在 Azure Databricks 工作区中运行。 请参阅运行捆绑包
  7. 监视:使用 Azure Monitor 或 Datadog 等工具监视 Azure Databricks 中代码和工作流的性能。 这有助于识别和解决生产环境中出现的任何问题。
  8. 迭代:进行小型频繁迭代,以改进和更新数据工程或数据科学项目。 与大型更改相比,小型更改更易于回滚。

有关管理 Azure Databricks 资产和数据生命周期的详细信息,请参阅以下有关 CI/CD 和数据管道工具的文档。

区域 在需要执行以下任务时使用这些工具:
Databricks 资产捆绑包 使用 CI/CD 最佳做法和工作流以编程方式定义、部署和运行 Azure Databricks 作业、增量实时表管道和 MLOps 堆栈。
使用 Git 和 Databricks Repos 的 CI/CD 工作流 将 GitHub 和 Databricks Repos 用于源代码管理和 CI/CD 工作流。
使用 Azure DevOps 在 Azure Databricks 上进行持续集成和交付 为 Azure Databricks 开发使用 Azure DevOps 的 CI/CD 管道。
使用 GitHub Actions 进行持续集成和交付 在 GitHub 上开发 CI/CD 工作流,该工作流使用为 Azure Databricks 开发的 GitHub Actions。
在 Azure Databricks 上使用 Jenkins 进行 CI/CD 为 Azure Databricks 开发使用 Jenkins 的 CI/CD 管道。
使用 Apache Airflow 协调 Azure Databricks 作业 管理和计划使用 Apache Airflow 的数据管道。
CI/CD 的服务主体 将服务主体(而不是用户)用于 CI/CD 系统。