Use version controlled source code in a Databricks job
You can run jobs using notebooks or Python code located in a remote Git repository or a Databricks repo. This feature simplifies the creation and management of production jobs and automates continuous deployment:
You don’t need to create a separate production repo in Databricks, manage its permissions, and keep it updated.
You can prevent unintentional changes to a production job, such as local edits in the production repo or changes from switching a branch.
The job definition process has a single source of truth in the remote repository, and each job run is linked to a commit hash.
To use source code in a remote Git repository, you must Set up Databricks Repos.
Use a notebook from a remote Git repository
To create a task with a notebook located in a remote Git repository:
Click
Workflows in the sidebar and click
or go to an existing job and add a new task.
If this is a new job, replace Add a name for your job… with your job name.
Enter a name for the task in the Task name field.
In the Type drop-down menu, select Notebook.
In the Source drop-down menu, select Git provider and click Edit or Add a git reference. The Git information dialog appears.
In the Git Information dialog, enter details for the repository, including the repository URL, the Git Provider, and the Git reference. This Git reference can be a branch, a tag, or a commit.
For Path, enter a relative path to the notebook location, such as
etl/notebooks/
.When you enter the relative path, don’t begin it with
/
or./
, and don’t include the notebook file extension, such as.py
. For example, if the absolute path for the notebook you want to access is/notebooks/covid_eda_raw.py
, enternotebooks/covid_eda_raw
in the Path field.Click Create.
Use Python code from a remote Git repository
To create a task with Python code located in a remote Git repository:
Click
Workflows in the sidebar and click
or go to an existing job and add a new task.
If this is a new job, replace Add a name for your job… with your job name.
Enter a name for the task in the Task name field.
In the Type drop-down menu, select Python script.
In the Source drop-down menu, select Git provider and click Edit or Add a git reference. The Git information dialog appears.
In the Git Information dialog, enter details for the repository, including the repository URL, the Git Provider, and the Git reference. This Git reference can be a branch, a tag, or a commit.
For Path, enter a relative path to the source location, such as
etl/python/python_etl.py
.When you enter the relative path, don’t begin it with
/
or./
. For example, if the absolute path for the Python code you want to access is/python/covid_eda_raw.py
, enterpython/covid_eda_raw.py
in the Path field.Click Create.
When you view the run history of a task that runs Python code stored in a remote Git repository, the Task run details panel includes Git details, including the commit SHA associated with the run.
Use SQL queries from a remote Git repository
Note
Only one SQL statement is supported in a file. Multiple SQL statements separated by semicolons (;) are not permitted.
To run queries stored in .sql
files located in a remote Git repository:
Click
Workflows in the sidebar and click
or go to an existing job and add a new task.
If this is a new job, replace Add a name for your job… with your job name.
Enter a name for the task in the Task name field.
In the Type drop-down menu, select SQL.
In the SQL task drop-down menu, select File.
In the Source drop-down menu, select Git provider and click Edit or Add a git reference. The Git information dialog appears.
In the Git Information dialog, enter details for the repository, including the repository URL, the Git Provider, and the Git reference. This Git reference can be a branch, a tag, or a commit.
For Path, enter a relative path to the source location, such as
queries/sql/myquery.sql
.When you enter the relative path, don’t begin it with
/
or./
. For example, if the absolute path for the SQL query you want to access is/sql/myqeury.sql
, entersql/myquery.sql
in the Path field.Select a SQL warehouse. You must select a serverless SQL warehouse or a pro SQL warehouse.
Click Create.
Adding additional tasks from a remote Git repository
Additional tasks in a multitask job can reference the same commit in the remote repository in one of the following ways:
sha
of$branch/head
whengit_branch
is setsha
of$tag
whengit_tag
is setthe value of
git_commit
You can mix notebook and Python tasks in a Databricks job, but they must use the same Git reference.
Use a Databricks repo
If you prefer to use a Databricks repo for your source code, you can clone your repository into a Databricks repo:
In the sidebar, go to Workspaces > Repos. Select the Add button, and select Repo.
Make sure Create repo by cloning a Git repository is selected and enter the details for your Git repository.
To add a notebook or Python code from a Databricks repo in a job task, in the Source drop-down menu, select Workspace and enter the path to the notebook or Python code in Path.
Access notebooks from an IDE
If you need to access notebooks from an integrated development environment, make sure you have the comment # Databricks notebook source
at the top of the notebook source code file. To distinguish between a regular Python file and a Databricks Python-language notebook exported in source-code format, Databricks adds the line # Databricks notebook source
at the top of the notebook source code file. When you import the notebook, Databricks recognizes it and imports it as a notebook, not as a Python module.
Troubleshooting
Note
Git-based jobs do not support write access to workspace files. To write data to a temporary storage location, use driver storage. To write persistent data from a Git job, use a UC volume or DBFS.
Error message:
Run result unavailable: job failed with error message Notebook not found: path-to-your-notebook
Possible causes:
Your notebook is missing the comment # Databricks notebook source
at the top of the notebook source code file, or in the comment notebook
is capitalized when it must start with lowercase n
.