将 Delta Live Tables 管道转换为 Databricks 资产捆绑包项目

本文介绍如何将现有的Delta Live Tables (DLT) 管道转化为一个捆绑项目。 通过捆绑包,可以在单个源控制的 YAML 文件中定义和管理 Azure Databricks 数据处理配置,该文件提供更简单的维护,并允许自动部署到目标环境。

转换过程概述

图显示了将现有管道转换为捆绑包的具体步骤

将现有管道转换为捆绑包所要执行的步骤包括:

  1. 确保您可以访问已配置好的管道,以便将其转换为捆绑包。
  2. 创建或准备文件夹(最好在源代码控制的层次结构中)以存储捆绑包。
  3. 使用 Azure Databricks CLI 从现有管道生成捆绑包的配置。
  4. 查看生成的捆绑配置,确保其完整。
  5. 将捆绑包链接到原始管道。
  6. 使用捆绑配置将管道部署到目标工作区。

要求

在开始之前,你必须具有:

  • 在本地开发计算机上安装的 Databricks CLI。 使用 Databricks 资产捆绑包需要 Databricks CLI 版本 0.218.0 或更高版本。
  • 你将使用捆绑包管理的现有 DLT 管道的 ID。 若要了解如何获取此 ID,请参阅 使用 UI获取现有管道定义。
  • 运行现有 DLT 管道的 Azure Databricks 工作区的授权。 若要为 Azure Databricks CLI 调用配置身份验证和授权,请参阅 授权访问 Azure Databricks 资源

步骤 1:为捆绑项目设置文件夹

必须有权访问 Azure Databricks 中配置为 Git 文件夹的 Git 存储库。 在此存储库中创建捆绑项目,该项目将应用源代码管理,并通过相应 Azure Databricks 工作区中的 Git 文件夹向其他协作者提供它。 (有关 Git 文件夹的更多详细信息,请参阅 Databricks Git 文件夹的 Git 集成。)

  1. 转到本地计算机上的克隆 Git 存储库的根目录。

  2. 在文件夹层次结构中的适当位置,专门为捆绑项目创建一个文件夹。 例如:

    mkdir - p ~/source/my-pipelines/ingestion/events/my-bundle
    
  3. 将当前工作目录更改为此新文件夹。 例如:

    cd ~/source/my-pipelines/ingestion/events/my-bundle
    
  4. 通过运行 databricks bundle init 并回答提示来初始化新捆绑包。 完成后,项目的新主文件夹中将有一个名为 databricks.yml 的项目配置文件。 从命令行部署管道需要此文件。 有关此配置文件的更多详细信息,请参阅 Databricks 资产捆绑包配置

步骤 2:生成管道配置

从克隆的 Git 存储库文件夹树中的此新目录运行以下 Azure Databricks CLI 命令,并提供 DLT 管道的 ID 作为 <pipeline-id>

databricks bundle generate pipeline --existing-pipeline-id <pipeline-id> --profile <profile-name>

运行 generate 命令时,它会在捆绑包的 resources 文件夹中为管道创建捆绑配置文件,并将任何引用的项目下载到 src 文件夹中。 --profile(或 -p 标志)是可选项,但是,如果您有一个特定的 Databricks 配置文件(在安装 Azure Databricks CLI 时创建的 .databrickscfg 文件中定义),并且想要使用这个配置文件而不是默认配置文件,请在此命令中提供它。 有关 Databricks 配置文件的信息,请参阅 Azure Databricks 配置文件

步骤 3:查看捆绑项目文件

bundle generate 命令完成后,它将创建两个新文件夹:

  • resources 是包含项目配置文件的项目子目录。
  • src 是存储源文件(如查询和笔记本)的项目文件夹。

该命令还会创建一些其他文件:

  • resources 子目录下的 *.pipeline.yml。 此文件包含 DLT 管道的特定配置和设置。
  • 从现有 DLT 管道复制的 src 子目录下的源文件(如 SQL 查询)。
├── databricks.yml                            # Project configuration file created with the bundle init command
├── resources/
│   └── {your-pipeline-name.pipeline}.yml     # Pipeline configuration
└── src/
    └── {SQl-query-retrieved-from-your-existing-pipeline}.sql # Your pipeline's declarative query

步骤 4:将捆绑包管道绑定到现有管道

必须将捆绑包中的管道定义链接或绑定到现有的管道,以便在进行更改时保持其最新状态。 为此,请运行以下 Azure Databricks CLI 命令:

databricks bundle deployment bind <pipeline-name> <pipeline-ID> --profile <profile-name>

<pipeline-name> 是管道的名称。 此名称应与新 resources 目录中管道配置的文件名的前缀字符串值相同。 例如,如果 resources 文件夹中有一个名为 ingestion_data_pipeline.pipeline.yml 的管道配置文件,则必须提供 ingestion_data_pipeline 作为管道名称。

<pipeline-ID> 是管道的 ID。 它与你根据这些说明的要求复制的管道 ID 相同。

步骤 5:使用新软件包部署管道

现在,使用 bundle deploy Azure Databricks CLI 命令将管道捆绑部署到目标工作区:

databricks bundle deploy --target <target-name> --profile <profile-name>

--target 标志是必需的,并且必须设置为与配置的目标工作区名称匹配的字符串,例如 developmentproduction

如果此命令成功,则现在已在外部项目中拥有 DLT 管道配置,可以加载到其他工作区并运行,并轻松地与帐户中的其他 Azure Databricks 用户共享。

故障排除

问题 解决方案
运行 bundle generate 时出现“找不到databricks.yml”错误 目前,bundle generate 命令不会自动创建捆绑配置文件(databricks.yml)。 必须使用 databricks bundle init 或手动创建文件。
现有管道设置与生成的管道 YAML 配置中的值不匹配 管道 ID 不会显示在捆绑包配置 YML 文件中。 如果注意到任何其他缺失的设置,可以手动应用它们。

成功提示

  • 始终使用版本控制。 如果不使用 Databricks Git 文件夹,请将项目子目录和文件存储在 Git 或其他版本控制的存储库或文件系统中。
  • 在将管道部署到生产环境之前,在非生产环境中(例如“开发”或“测试”环境)中测试管道。 很容易意外引入错误配置。

其他资源

有关使用捆绑包定义和管理数据处理的详细信息,请参阅: