Databricks 资产捆绑包(也称为 捆绑包)中包含您想要部署的工件以及您想要运行的 Azure Databricks 资源(例如作业)的设置,并允许您以编程方式验证、部署和运行它们。 请参阅什么是 Databricks 资产捆绑包?。
本页介绍如何创建捆绑包以编程方式管理作业。 请参阅 Lakeflow Jobs。 捆绑包是使用用于 Python 的 Databricks 资产捆绑 包默认捆绑模板创建的,该模板由笔记本和要运行作业的定义组成。 然后在 Azure Databricks 工作区中验证、部署和运行已部署的作业。
提示
如果您有通过 Lakeflow 作业用户界面或 API 创建的作业,并且想要将它们移动到捆绑包中,那么您必须在捆绑包的配置文件中定义这些作业。 Databricks 建议首先使用以下步骤创建捆绑包,并验证捆绑包是否正常工作。 然后,可以将其他作业定义、笔记本和其他源添加到捆绑包。 请参阅 使用 UI 检索现有作业定义。
如果要从头开始创建捆绑包,请参阅手动创建捆绑包。
要求
- Databricks CLI 版本 0.218.0 或更高版本。 若要检查安装的 Databricks CLI 版本,请运行命令
databricks -v。 要安装 Databricks CLI,请参阅《安装或更新 Databricks CLI》。 - 需要 uv 才能运行测试和从 IDE 安装此项目的依赖项。
- 远程 Databricks 工作区必须启用工作区文件。 请参阅什么是工作区文件?。
- 现有目录。 若要创建目录,请参阅 “创建目录”。
步骤 1:设置身份验证
首先,在开发计算机和 Azure Databricks 工作区的 Databricks CLI 之间设置身份验证。 此页假定你想要使用 OAuth 用户到机器(U2M)身份验证,以及一个名为 DEFAULT 的相应 Azure Databricks 配置文件进行身份验证。
注意
U2M 身份验证适用于实时尝试这些步骤。 对于完全自动化的工作流,Databricks 建议改用 OAuth 计算机到计算机 (M2M) 身份验证。 请参阅 授权服务主体使用 OAuth 访问 Azure Databricks 中的 M2M 身份验证设置说明。
通过对每个目标工作区运行以下命令,使用 Databricks CLI 在本地启动 OAuth 令牌管理。
在以下命令中,将
<workspace-url>替换为 Azure Databricks 每工作区 URL,例如https://adb-1234567890123456.7.databricks.azure.cn。databricks auth login --host <workspace-url>Databricks CLI 会提示将输入的信息保存为 Azure Databricks 配置文件。 按
Enter接受建议的配置文件名称,或输入新的或现有的配置文件的名称。 任何具有相同名称的现有配置文件都会被输入的信息覆盖。 可以使用配置文件在多个工作区之间快速切换身份验证上下文。若要获取任何现有配置文件的列表,请在单独的终端或命令提示符中使用 Databricks CLI 来运行
databricks auth profiles命令。 要查看特定配置文件的现有设置,请运行命令databricks auth env --profile <profile-name>。在 Web 浏览器中,按照屏幕上的说明登录到 Azure Databricks 工作区。
要查看配置文件的当前 OAuth 令牌值和令牌即将过期的时间戳,请运行以下命令之一:
databricks auth token --host <workspace-url>databricks auth token -p <profile-name>databricks auth token --host <workspace-url> -p <profile-name>
如果你有多个配置文件有相同的
--host值,则可能需要同时指定--host和-p选项,以便 Databricks CLI 找到正确的、匹配的 OAuth 令牌信息。
步骤 2:初始化捆绑包
使用默认 Python 捆绑包项目模板来初始化捆绑包。
使用终端或命令提示符切换到本地开发计算机上的目录,该目录中包含模板生成的程序包。
使用 Databricks CLI 运行
bundle init命令:databricks bundle init对于
Template to use,请按default-python保留Enter的默认值。对于
Unique name for this project,请保留my_project的默认值,或键入其他值,然后按Enter。 这将确定此捆绑包的根目录的名称。 此根目录是在当前工作目录中创建的。对于“
Include a job that runs a notebook”,选择“yes”并按“Enter”。对于“
Include an ETL pipeline”,选择“no”并按“Enter”。对于“
Include a stub (sample) Python package”,选择“no”并按“Enter”。对于“
Use serverless”,选择“yes”并按“Enter”。 这会指示 Databricks CLI 将捆绑包配置为在无服务器计算上运行。对于
Default catalog for any tables created by this project [hive_metastore],请输入现有 Unity 目录目录的名称。对于
Use a personal schema for each user working on this project.,请选择yes。
步骤 3:浏览捆绑包
要查看模板生成的文件,请切换到新创建的捆绑包的根目录。 特别感兴趣的文件包括:
-
databricks.yml:此文件指定捆绑包的编程名称,包括对捆绑包文件的引用、定义目录和架构变量,以及指定目标工作区的设置。 -
resources/sample_job.job.yml:此文件指定作业的设置,包括默认的笔记本任务。 有关作业设置的信息,请参阅 作业。 -
src/:此文件夹包含作业的源文件。 -
src/sample_notebook.ipynb:此笔记本读取示例表。 -
tests/:此文件夹包含示例单元测试。 -
README.md:此文件包含有关入门和使用此捆绑模板的其他信息。
提示
可以通过使用“ 替代”和目标设置中所述的技术,在捆绑包中定义、合并和替代新作业群集的设置。
步骤 4:验证捆绑包配置
现在检查捆绑配置是否有效。
在根目录中,使用 Databricks CLI 运行以下命令
bundle validate:databricks bundle validate如果返回了捆绑包配置的摘要,则表示验证成功。 如果返回了任何错误,请修复错误,然后重复此步骤。
步骤 5:将捆绑包部署到远程工作区
接下来,将作业部署到远程 Azure Databricks 工作区,并验证工作区中的作业。
在捆绑根目录下,使用 Databricks CLI 运行以下命令
bundle deploy:databricks bundle deploy --target dev确认笔记本已部署:
- 在 Azure Databricks 工作区的边栏中,单击“ 工作区”。
- 单击进入以下文件夹:Users >
<your-username>> .bundle ><project-name>> dev > files > src。 笔记本应该位于此文件夹中。
检查是否已创建作业:
- 在 Azure Databricks 工作区的边栏中,单击作业和管道。
- (可选)选择作业和归我所有筛选器。
- 单击 [dev
<your-username>]sample_job。 - 单击“ 任务 ”选项卡。应该有一个 notebook_task。
如果在此步骤之后对捆绑包进行了任何更改,则应重复步骤 4-5 以检查捆绑包配置是否仍然有效,然后重新部署项目。
步骤 6:运行已部署的作业
现在,从命令行启动你工作区中的作业。
在根目录中,使用 Databricks CLI 运行以下命令
bundle run:databricks bundle run --target dev sample_job复制终端中显示的
Run URL值,并将该值粘贴到 Web 浏览器中以打开 Azure Databricks 工作区。 请参阅 查看并运行由 Databricks 资产包创建的作业在 Azure Databricks 工作区中,作业任务成功完成并显示绿色标题栏后,请单击作业任务以查看结果。
如果在此步骤之后对捆绑包进行了任何更改,则应重复步骤 4-6 以检查捆绑包配置是否仍然有效,重新部署项目,然后运行重新部署的项目。
步骤 7:运行测试
最后,使用 pytest 在本地运行测试。
uv run pytest
步骤 8:清理
在此步骤中,将从工作区中删除已部署的笔记本和作业。
在根目录中,使用 Databricks CLI 运行以下命令
bundle destroy:databricks bundle destroy --target dev当系统提示永久删除所有工作区文件和目录时,键入
y并按Enter。如果还需要从开发计算机中删除捆绑包,现在可以删除本地项目目录。