在 Azure Databricks 作业中使用版本受控的源代码
使用位于远程 Git 存储库或 Databricks Git 文件夹中的笔记本或 Python 代码运行作业。 此功能简化了生产作业的创建和管理,并自动执行持续部署:
- 无需在 Azure Databricks 中创建单独的生产存储库、管理其权限并使其保持更新。
- 可防止对生产作业的意外更改,例如生产存储库中的本地编辑或切换分支的更改。
- 作业定义过程使用远程存储库中的单个事实源,每个作业运行链接到一个提交哈希。
若要在远程 Git 存储库中使用源代码,必须设置 Databricks Git 文件夹(存储库)。
重要
从远程 Git 存储库运行的 Azure Databricks 作业创建的笔记本是临时的,你不能依赖它们来跟踪 MLflow 运行、试验或模型。 从作业创建笔记本时,请使用工作区 MLflow 试验(而不是笔记本 MLflow 试验),并在运行任何 MLflow 跟踪代码之前在工作区笔记本中调用 mlflow.set_experiment("/path/to/experiment")
。 如需更多详细信息,请参阅防止 MLflow 试验中出现数据丢失。
注意
如果你的作业使用服务主体作为标识来运行,则可以在包含作业源代码的 Git 文件夹上配置服务主体。 请参阅将服务主体与 Databricks Git 文件夹配合使用。
使用远程 Git 存储库中的笔记本
使用位于远程 Git 存储库中的笔记本创建任务:
单击边栏中的 工作流,然后单击 或转到现有作业并添加新任务。
如果这是一个新作业,请将“为作业添加名称…”替换为你的作业名称。
在“任务名称”字段中输入任务的名称。
在“类型”下拉菜单中选择“笔记本”。
在“源”下拉菜单中选择“Git 提供程序”,然后单击“编辑”或“添加 Git 引用”。 随即将出现“Git 信息”对话框。
在“Git 信息”对话框中输入存储库的详细信息,包括存储库 URL、Git 提供程序和 Git 引用。 此 Git 引用可以是分支、标记或提交。
对于“路径”,请输入笔记本位置的相对路径,例如
etl/notebooks/
。输入相对路径时,不要以
/
或./
开头,也不要包含笔记本文件扩展名,例如.py
。 例如,如果要访问的笔记本的绝对路径为/notebooks/covid_eda_raw.py
,请在“路径”字段中输入notebooks/covid_eda_raw
。单击 “创建” 。
重要
如果直接从源 Git 存储库使用 Python 笔记本,则笔记本源文件的第一行必须是 # Databricks notebook source
。 对于 Scala 笔记本,源文件的第一行必须是 // Databricks notebook source
。
使用远程 Git 存储库中的 Python 代码
若要使用位于远程 Git 存储库中的 Python 代码创建任务,请执行以下操作:
单击边栏中的 工作流,然后单击 或转到现有作业并添加新任务。
如果这是一个新作业,请将“为作业添加名称…”替换为你的作业名称。
在“任务名称”字段中输入任务的名称。
在“类型”下拉菜单中,选择“Python 脚本”。
在“源”下拉菜单中选择“Git 提供程序”,然后单击“编辑”或“添加 Git 引用”。 随即将出现“Git 信息”对话框。
在“Git 信息”对话框中输入存储库的详细信息,包括存储库 URL、Git 提供程序和 Git 引用。 此 Git 引用可以是分支、标记或提交。
对于“路径”,请输入源位置的相对路径,例如
etl/python/python_etl.py
。输入相对路径时,请不要以
/
或./
开头。 例如,如果要访问的 Python 代码的绝对路径为/python/covid_eda_raw.py
,请在“路径”字段中输入python/covid_eda_raw.py
。单击“创建”。
查看运行存储在远程 Git 存储库中的 Python 代码的任务的运行历史记录时,“任务运行详细信息”面板将包含 Git 详细信息,包括与运行关联的提交 SHA。
使用来自远程 Git 存储库的 SQL 查询
注意
一个文件中仅支持一个 SQL 语句。 不允许使用用分号 (;) 分隔多个 SQL 语句。
若要运行存储在远程 Git 存储库中的 .sql
文件中的查询,请执行以下操作:
单击边栏中的 工作流,然后单击 或转到现有作业并添加新任务。
如果这是一个新作业,请将“为作业添加名称…”替换为你的作业名称。
在“任务名称”字段中输入任务的名称。
在“类型”下拉菜单中,选择“SQL”。
在“SQL 任务”下拉菜单中,选择“文件”。
在“源”下拉菜单中选择“Git 提供程序”,然后单击“编辑”或“添加 Git 引用”。 随即将出现“Git 信息”对话框。
在“Git 信息”对话框中输入存储库的详细信息,包括存储库 URL、Git 提供程序和 Git 引用。 此 Git 引用可以是分支、标记或提交。
对于“路径”,请输入源位置的相对路径,例如
queries/sql/myquery.sql
。输入相对路径时,请不要以
/
或./
开头。 例如,如果要访问的 SQL 查询的绝对路径为/sql/myqeury.sql
,请在“路径”字段中输入sql/myquery.sql
。选择一个 SQL 仓库。 必须选择无服务器 SQL 仓库或专业 SQL 仓库。
单击 “创建” 。
从远程 Git 存储库添加其他任务
多任务作业中的其他任务可采用下列任一方式引用远程存储库中的相同提交:
$branch/head
的sha
(如果设置了git_branch
)$tag
的sha
(如果设置了git_tag
)git_commit
的值
可以在 Azure Databricks 作业中混合使用笔记本和 Python 任务,但它们必须使用相同的 Git 引用。
使用 Databricks Git 文件夹
如果想要使用 Azure Databricks UI 对源代码进行版本控制,请将存储库克隆到 Databricks Git 文件夹中。 有关详细信息,请参阅选项 2:设置生产 Git 文件夹和 Git 自动化。
要在作业任务中从 Git 文件夹添加笔记本或 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
开头时进行了首字母大写。