将 Delta Live Tables 管道转换为 Databricks 资产捆绑包项目
本文介绍如何将现有的Delta Live Tables (DLT) 管道转化为一个捆绑项目。 通过捆绑包,可以在单个源控制的 YAML 文件中定义和管理 Azure Databricks 数据处理配置,该文件提供更简单的维护,并允许自动部署到目标环境。
转换过程概述
将现有管道转换为捆绑包所要执行的步骤包括:
- 确保您可以访问已配置好的管道,以便将其转换为捆绑包。
- 创建或准备文件夹(最好在源代码控制的层次结构中)以存储捆绑包。
- 使用 Azure Databricks CLI 从现有管道生成捆绑包的配置。
- 查看生成的捆绑配置,确保其完整。
- 将捆绑包链接到原始管道。
- 使用捆绑配置将管道部署到目标工作区。
要求
在开始之前,你必须具有:
- 在本地开发计算机上安装的 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 集成。)
转到本地计算机上的克隆 Git 存储库的根目录。
在文件夹层次结构中的适当位置,专门为捆绑项目创建一个文件夹。 例如:
mkdir - p ~/source/my-pipelines/ingestion/events/my-bundle
将当前工作目录更改为此新文件夹。 例如:
cd ~/source/my-pipelines/ingestion/events/my-bundle
通过运行
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
标志是必需的,并且必须设置为与配置的目标工作区名称匹配的字符串,例如 development
或 production
。
如果此命令成功,则现在已在外部项目中拥有 DLT 管道配置,可以加载到其他工作区并运行,并轻松地与帐户中的其他 Azure Databricks 用户共享。
故障排除
问题 | 解决方案 |
---|---|
运行 bundle generate 时出现“找不到databricks.yml ”错误 |
目前,bundle generate 命令不会自动创建捆绑配置文件(databricks.yml )。 必须使用 databricks bundle init 或手动创建文件。 |
现有管道设置与生成的管道 YAML 配置中的值不匹配 | 管道 ID 不会显示在捆绑包配置 YML 文件中。 如果注意到任何其他缺失的设置,可以手动应用它们。 |
成功提示
- 始终使用版本控制。 如果不使用 Databricks Git 文件夹,请将项目子目录和文件存储在 Git 或其他版本控制的存储库或文件系统中。
- 在将管道部署到生产环境之前,在非生产环境中(例如“开发”或“测试”环境)中测试管道。 很容易意外引入错误配置。
其他资源
有关使用捆绑包定义和管理数据处理的详细信息,请参阅:
- 什么是 Databricks 资产捆绑包?
- 使用 Databricks 资产捆绑包开发 Delta Live Tables 管道。 本主题介绍如何为新管道(而不是现有管道)创建捆绑包,其中包含你提供的用于处理的源代码控制笔记本。