在 Azure Databricks 作业中使用版本受控的源代码

使用位于远程 Git 存储库或 Databricks 存储库中的笔记本或 Python 代码运行作业。 此功能简化了生产作业的创建和管理,并自动执行持续部署:

  • 无需在 Azure Databricks 中创建单独的生产存储库、管理其权限并使其保持更新。
  • 可防止对生产作业的意外更改,例如生产存储库中的本地编辑或切换分支的更改。
  • 作业定义过程使用远程存储库中的单个事实源,每个作业运行链接到一个提交哈希。

若要使用远程 Git 存储库中的源代码,必须设置 Databricks Repos

注意

如果你的作业使用服务主体作为标识来运行,则可以在包含作业源代码的存储库上配置服务主体。 请参阅将服务主体与 Databricks Repos 配合使用

使用远程 Git 存储库中的笔记本

使用位于远程 Git 存储库中的笔记本创建任务:

  1. 在边栏中单击作业图标工作流”,然后单击创建作业按钮,或转到现有作业并添加新任务。

  2. 如果这是一个新作业,请将“为作业添加名称…”替换为你的作业名称。

  3. 在“任务名称”字段中输入任务的名称。

  4. 在“类型”下拉菜单中选择“笔记本”

  5. 在“源”下拉菜单中选择“Git 提供程序”,然后单击“编辑”或“添加 Git 引用”。 随即将出现“Git 信息”对话框。

  6. 在“Git 信息”对话框中输入存储库的详细信息,包括存储库 URL、Git 提供程序和 Git 引用。 此 Git 引用可以是分支、标记或提交。

    对于“路径”,请输入笔记本位置的相对路径,例如 etl/notebooks/

    输入相对路径时,不要以 /./ 开头,也不要包含笔记本文件扩展名,例如 .py。 例如,如果要访问的笔记本的绝对路径为 /notebooks/covid_eda_raw.py,请在“路径”字段中输入 notebooks/covid_eda_raw

  7. 单击“创建”。

使用远程 Git 存储库中的 Python 代码

若要使用位于远程 Git 存储库中的 Python 代码创建任务,请执行以下操作:

  1. 在边栏中单击作业图标工作流”,然后单击创建作业按钮,或转到现有作业并添加新任务。

  2. 如果这是一个新作业,请将“为作业添加名称…”替换为你的作业名称。

  3. 在“任务名称”字段中输入任务的名称。

  4. 在“类型”下拉菜单中,选择“Python 脚本”

  5. 在“源”下拉菜单中选择“Git 提供程序”,然后单击“编辑”或“添加 Git 引用”。 随即将出现“Git 信息”对话框。

  6. 在“Git 信息”对话框中输入存储库的详细信息,包括存储库 URL、Git 提供程序和 Git 引用。 此 Git 引用可以是分支、标记或提交。

    对于“路径”,请输入源位置的相对路径,例如 etl/python/python_etl.py

    输入相对路径时,请不要以 /./ 开头。 例如,如果要访问的 Python 代码的绝对路径为 /python/covid_eda_raw.py,请在“路径”字段中输入 python/covid_eda_raw.py

  7. 单击“创建”。

查看运行存储在远程 Git 存储库中的 Python 代码的任务的运行历史记录时,“任务运行详细信息”面板将包含 Git 详细信息,包括与运行关联的提交 SHA。

使用来自远程 Git 存储库的 SQL 查询

注意

一个文件中仅支持一个 SQL 语句。 不允许使用用分号 (;) 分隔多个 SQL 语句。

若要运行存储在远程 Git 存储库中的 .sql 文件中的查询,请执行以下操作:

  1. 在边栏中单击作业图标工作流”,然后单击创建作业按钮,或转到现有作业并添加新任务。

  2. 如果这是一个新作业,请将“为作业添加名称…”替换为你的作业名称。

  3. 在“任务名称”字段中输入任务的名称。

  4. 在“类型”下拉菜单中,选择“SQL”

  5. 在“SQL 任务”下拉菜单中,选择“文件”

  6. 在“源”下拉菜单中选择“Git 提供程序”,然后单击“编辑”或“添加 Git 引用”。 随即将出现“Git 信息”对话框。

  7. 在“Git 信息”对话框中输入存储库的详细信息,包括存储库 URL、Git 提供程序和 Git 引用。 此 Git 引用可以是分支、标记或提交。

    对于“路径”,请输入源位置的相对路径,例如 queries/sql/myquery.sql

    输入相对路径时,请不要以 /./ 开头。 例如,如果要访问的 SQL 查询的绝对路径为 /sql/myqeury.sql,请在“路径”字段中输入 sql/myquery.sql

  8. 选择一个 SQL 仓库。 必须选择无服务器 SQL 仓库或专业 SQL 仓库。

  9. 单击 “创建”

从远程 Git 存储库添加其他任务

多任务作业中的其他任务可采用下列任一方式引用远程存储库中的相同提交:

  • $branch/headsha(如果设置了 git_branch
  • $tagsha(如果设置了 git_tag
  • git_commit 的值

可以在 Azure Databricks 作业中混合使用笔记本和 Python 任务,但它们必须使用相同的 Git 引用。

使用 Databricks 存储库

如果你希望对源代码使用 Databricks Repo,请将存储库克隆到 Databricks Repo 中。 有关详细信息,请参阅将服务主体与 Databricks Repos 配合使用

要在作业任务中从 Databricks 存储库添加笔记本或 Python 代码,请在“源”下拉菜单中选择“工作区”,然后在“路径”中输入该笔记本或 Python 代码的路径

从 IDE 访问笔记本

如果需要从集成开发环境访问笔记本,请确保笔记本源代码文件的顶部包含注释 # Databricks notebook source。 为了区分常规 Python 文件和以源代码格式导出的 Azure Databricks Python 语言笔记本,Databricks 在笔记本源代码文件的顶部添加了 # Databricks notebook source 行。 导入笔记本时,Azure Databricks 会识别它并将其作为笔记本导入,而不是作为 Python 模块导入。

疑难解答

注意

基于 Git 的作业不支持对工作区文件的写入访问。 要将数据写入临时存储位置,请使用驱动程序存储。 要从 Git 作业写入持久数据,请使用 UC 卷或 DBFS。

错误消息

Run result unavailable: job failed with error message Notebook not found: path-to-your-notebook

可能的原因:

你的笔记本在笔记本源代码文件的顶部缺少注释 # Databricks notebook source,或者在注释中,notebook 在必须以小写字母 n 开头时进行了首字母大写。