Azure databricks notebook

Azure databricks notebook DEFAULT


All right, the cluster’s running. Remember how we configured it to shut down if it’s inactive for 120 minutes? Well, even if you hadn’t used this cluster for over 2 hours, its configuration would still exist, so you could start it up again.

Databricks saves the configuration of a terminated cluster for 30 days if you don’t delete the cluster. If you want it to save the configuration for more than 30 days, then all you have to do is click this pin. A pinned cluster can’t be deleted.

OK, now that you have a cluster running, you can execute code on it. You can do that by using a notebook. If you’ve ever used a Jupyter notebook before, then a Databricks notebook will look very familiar.

Let’s create one so you can see what I mean. The notebook will reside in a workspace, so click “Workspace”, open the dropdown menu, go into the Create menu, and select “Notebook”. Let’s call it “test”. For the language, you can choose Python, Scala, SQL, or R. We’re going to run some simple queries, so select “SQL”.

A notebook is a document where you can enter some code, run it, and the results will be shown in the notebook. It’s perfect for data exploration and experimentation because you can go back and see all of the things you tried and what the results were in each case. It’s essentially an interactive document that contains live code. You can even run some of the code again if you want.

Alright, let’s run a query. Since we haven’t uploaded any data, you might be wondering what we’re going to run a query on. Well, there’s actually lots of data we can query even without uploading any of it. Azure Databricks is integrated with many other Azure services, including SQL Database, Data Lake Storage, Blob Storage, Cosmos DB, Event Hubs, and SQL Data Warehouse, so you can access data in any of those using the appropriate connector. However, we don’t even need to do that because Databricks also includes some sample datasets.

To see which datasets are available, you can run a command in this command box. There’s one catch, though. When we created this notebook, we selected SQL as the language, so whatever we type in this command box will be interpreted as SQL. The exception is if you start the command with a percent sign and the name of another language. For example, if you wanted to run some Python code in a SQL notebook, you would start it with “%python”, and it would be interpreted properly.

Similarly, if you want to run a filesystem command, then you just need to start it with a “%fs”. To see what’s in the filesystem for this workspace, type “%fs ls”. The “ls” stands for “list” and will be familiar if you’ve used Linux or Unix.

To execute the command, you can either hit Shift-Enter, or you can select “Run cell” from this menu. I recommend using Shift-Enter because not only is that faster than going to the menu, but it also automatically brings up another cell for you so you can type another command.

You’ll notice that all of the folders start with “dbfs”. That stands for “Databricks File System”, which is a distributed filesystem that’s installed on the cluster. You don’t have to worry about losing data when you shut down the cluster, though, because DBFS is saved in Blob Storage.

The sample datasets are in the databricks-datasets folder. To list them, type “%fs ls databricks-datasets”. I’ve created a GitHub repository with a readme file that contains all of the commands and code in this course so you can copy and paste from there. The link to the repository is at the bottom of the course overview below.

To scroll through the list, click on the table first. Then the scroll bar will appear. There are lots of sample datasets, and they cover a wide variety of areas. For example, there’s one for credit card fraud, one for genomics, and one for songs.

Most of these folders don’t have very many datasets in them, but that’s not the case with the Rdatasets folder. It has over 700 datasets in it! I have to say it’s a pretty bizarre list of datasets, though. Some of them sound like made-up titles, such as “Prussian army horse kick data”, and some come from weirdly obscure experiments, such as “The Effect of Vitamin C on Tooth Growth in Guinea Pigs”, but my absolute favorite, which sounds like it comes from a mad scientist’s lab, is “Electrical Resistance of Kiwi Fruit”.

The one we’re going to use is pretty normal in comparison, although it’s still a bit odd. It shows what the prices were for various personal computers in the mid-1990s. Use this command to see what’s in it. The “head” command shows the first lines in a file, up to the maxBytes you specify, which is 1,000 bytes in this case. If you don’t specify MaxBytes, then it will default to about 65,000 bytes.

The first line contains the header, which shows what’s in each column, such as the price of the computer, its processor speed, and the size of its hard drive, RAM, and screen. Suppose we wanted to create a graph showing the average price of these 90s computers for each of the different memory sizes.

To run a query on this data, we need to load it into a table. A Databricks table is just a Spark DataFrame if you’re familiar with Spark. You can also think of it as being like a table in a relational database.

To load the csv file into a table, run these commands. The first command checks to see if a table named “computers” already exists, and if it does, then it drops (or deletes) it. You don’t have to do this, of course, because you haven’t created any tables yet, but it’s a good idea to do it. Why? Because if you wanted to run the code in this cell again, then the table would already exist, so you’d get an error if you didn’t drop the table first.

The second command creates the table. Note that it says there’s a header in the file. By setting header to true, it will name the columns for us, so we won’t have to do that ourselves. The “inferSchema” option is even more useful. It figures out the data type of each column, so we don’t have to specify that ourselves either.

Alright, now there are a couple of ways to see what’s in the table. One way is to click “Data” in the menu on the left, and then select the table. First, it shows you the schema. It labeled all of the columns according to the header line in the csv file. Notice, though, that the first column is called “_c0”. That’s because the header didn’t have a label for that column. The first column is just the record number, and we probably won’t need to refer to it in any queries, so it doesn’t matter that it has a generic name. If there hadn’t been a header row in the csv file (or if we hadn’t set the header option to true), then all of the columns would have names like this, which would make it more difficult to write queries.

To the right of the column name, it shows the data type. In this case, it figured out that most of the columns are integers. If we didn’t use the “inferSchema” option, and we didn’t specify the data type for each column, then it would set them all to “string”. Even worse, there’s no way to change the data types after you’ve created the table, so every time you needed to perform an operation on a numeric column, you’d have to cast it as the right data type. By using the “inferSchema” option, we don’t have to worry about any of that.

Under the schema, it shows a sample of the data in the table. This is the same data we saw when we ran the head command, but now it’s in a nicely formatted table.

While we’re here, I should point out that you can also create a table from this UI, which is a nice option because you can just point and click instead of having to write code. Unfortunately, you can’t get to the folder with the sample datasets in it from here, so we had to load in the Computers dataset using code.

To get back to the notebook, click on Workspace and select the notebook. It puts us back at the top of the notebook, which would be kind of annoying if this were a long notebook and we were doing something in the middle of it.

Another way to see what’s in the table is to run a SQL query. The simplest command would be “select * from computers”. If this were a really big table, then you might not want to run a “select *” on it since that reads in the entire table.

OK, so it shows a table just like what we saw in the Data UI. It also includes some controls at the bottom for displaying the results. It defaults to the first one, which is “raw table”, but you can also display it as a graph using this control. It’s graphing something that’s not very useful, though, so we need to click on plot options to tell it what we want to see.

Remember that we wanted to create a graph showing the average price of the computers for each of the different memory sizes. Get rid of the keys that it put in by default, and add “ram”, which is what we want to see. The preview of the graph changes whenever we change anything on the left, which is really useful. Then, for values, get rid of “Trend”, and put “price” in there.

We need to change the aggregation, down here, because it’s set to sum right now. We need to set it to average because we want to graph the average price of these computers. The preview is looking good, so click “Apply”.

Great, it worked. So a PC with 32 gig of memory used to cost over $3,500. That’s pretty expensive, but 32 gig of memory is a lot, so that doesn’t seem right for a 90s computer, does it? Well, actually, it’s 32 meg of memory. You’ve gotta love Moore’s Law.

And that’s it for this lesson.


Azure Databricks for Python developers

This section provides a guide to developing notebooks and jobs in Azure Databricks using the Python language.

Python APIs

PySpark API

PySpark is the Python API for Apache Spark. These links provide an introduction to and reference for PySpark.

Pandas API on Spark

pandas is a Python package commonly used by data scientists. However, pandas does not scale out to big data. Pandas API on Spark fills this gap by providing pandas equivalent APIs that work on Apache Spark.


Koalas provides a drop-in replacement for pandas. pandas is a Python package commonly used by data scientists. However, pandas does not scale out to big data. Koalas fills this gap by providing pandas equivalent APIs that work on Apache Spark.


Azure Databricks Python notebooks support various types of visualizations using the function.

You can also use the following third-party libraries to create visualizations in Azure Databricks Python notebooks.


These articles describe features that support interoperability between PySpark and pandas.

This article describes features that support interoperability between Python and SQL.


For information about working with Python in Azure Databricks notebooks, see Use notebooks. For instance:

  • You can override a notebook’s default language by specifying the language magic command at the beginning of a cell. For example, you can run Python code in a cell within a notebook that has a default language of R, Scala, or SQL. For Python, the language magic command is .
  • In Databricks Runtime 7.4 and above, you can display Python docstring hints by pressing Shift+Tab after entering a completable Python object.
  • Python notebooks support error highlighting. The line of code that throws the error is highlighted in the cell.


In addition to Azure Databricks notebooks, you can use the following Python developer tools:

For information about additional tools for working with Azure Databricks, see Developer tools and guidance.


  • The Databricks SQL Connector for Python is a Python library that allows you to use Python code to run SQL commands on Azure Databricks resources.
  • pyodbc allows you to connect from your local Python code through ODBC to data in Azure Databricks resources.
  • Databricks runtimes include many popular libraries. You can also install additional third-party or custom Python libraries to use with notebooks and jobs running on Azure Databricks clusters.

Cluster-based libraries

Cluster-based libraries are available to all notebooks and jobs running on the cluster.

Notebook-scoped libraries

Notebook-scoped libraries are available only to the notebook on which they are installed and must be reinstalled for each session.

Machine learning

For general information about machine learning on Azure Databricks, see Databricks Machine Learning guide.

To get started with machine learning using the scikit-learn library, use the following notebook. It covers data loading and preparation; model training, tuning, and inference; and model deployment and management with MLflow.

10-minute tutorial: machine learning on Databricks with scikit-learn

To get started with GraphFrames, a package for Apache Spark that provides DataFrame-based graphs, use the following notebook. It covers creating GraphFrames from vertex and edge DataFrames, peforming simple and complex graph queries, building subgraphs, and using standard graph algorithms such as breadth-first search and shortest paths.

GraphFrames Python notebook


You can run a Python script by calling the Create a new job operation () in the Jobs API, specifying the field in the request body.


  1. Maywood studio fabric
  2. Hydra pets wow
  3. Build battle
  4. Janitorial services montgomery, al
  5. 11th house taurus

Manage notebooks

You can manage notebooks using the UI, the CLI, and by invoking the Workspace API. This article focuses on performing notebook tasks using the UI. For the other methods, see Databricks CLI and Workspace API 2.0.

Create a notebook

Use the Create button

The easiest way to create a new notebook in your default folder is to use the Create button:

  1. Click Create IconCreate in the sidebar and select Notebook from the menu. The Create Notebook dialog appears.
  2. Enter a name and select the notebook’s default language.
  3. If there are running clusters, the Cluster drop-down displays. Select the cluster you want to attach the notebook to.
  4. Click Create.

Create a notebook in any folder

You can create a new notebook in any folder (for example, in the Shared folder) following these steps:

  1. In the sidebar, click Workspace IconWorkspace. Do one of the following:

    • Next to any folder, click the Menu Dropdown on the right side of the text and select Create > Notebook.

      Create notebook
    • In the workspace or a user folder, click Down Caret and select Create > Notebook.

  2. Follow steps 2 through 4 in Use the Create button.

Open a notebook

In your workspace, click a Notebook Icon. The notebook path displays when you hover over the notebook title.

Delete a notebook

See Folders and Workspace object operations for information about how to access the workspace menu and delete notebooks or other items in the workspace.

Copy notebook path

To copy a notebook file path without opening the notebook, right-click the notebook name or click the Menu Dropdown to the right of the notebook name and select Copy File Path.

Copy notebook path

Rename a notebook

To change the title of an open notebook, click the title and edit inline or click File > Rename.

Control access to a notebook

If your Databricks account has the Premium plan (or, for customers who subscribed to Databricks before March 3, 2020, the Operational Security package), you can use Workspace access control to control who has access to a notebook.

Notebook external formats

Databricks supports several notebook external formats:

  • Source file: A file containing only source code statements with the extension , , , or .
  • HTML: A Databricks notebook with the extension .
  • DBC archive: A Databricks archive.
  • IPython notebook: A Jupyter notebook with the extension .
  • RMarkdown: An R Markdown document with the extension .

Import a notebook

You can import an external notebook from a URL or a file. You can also import a ZIP archive of notebooks exported in bulk from a Databricks workspace.

  1. Click Workspace IconWorkspace in the sidebar. Do one of the following:

    • Next to any folder, click the Menu Dropdown on the right side of the text and select Import.

    • In the Workspace or a user folder, click Down Caret and select Import.

      Import notebook
  2. Specify the URL or browse to a file containing a supported external format or a ZIP archive of notebooks exported from a Databricks workspace.

  3. Click Import.

    • If you choose a single notebook, it is exported in the current folder.
    • If you choose a DBC or ZIP archive, its folder structure is recreated in the current folder and each notebook is imported.

Export a notebook

In the notebook toolbar, select File > Export and a format.


When you export a notebook as HTML, IPython notebook, or archive (DBC), and you have not cleared the results, the results of running the notebook are included.

Export all notebooks in a folder


When you export a notebook as HTML, IPython notebook, or archive (DBC), and you have not cleared the results, the results of running the notebook are included.

To export all folders in a workspace folder as a ZIP archive:

  1. Click Workspace IconWorkspace in the sidebar. Do one of the following:
    • Next to any folder, click the Menu Dropdown on the right side of the text and select Export.
    • In the Workspace or a user folder, click Down Caret and select Export.
  2. Select the export format:
    • DBC Archive: Export a Databricks archive, a binary format that includes metadata and notebook command results.
    • Source File: Export a ZIP archive of notebook source files, which can be imported into a Databricks workspace, used in a CI/CD pipeline, or viewed as source files in each notebook’s default language. Notebook command results are not included.
    • HTML Archive: Export a ZIP archive of HTML files. Each notebook’s HTML file can be imported into a Databricks workspace or viewed as HTML. Notebook command results are included.

Publish a notebook

If you’re using Community Edition, you can publish a notebook so that you can share a URL path to the notebook. Subsequent publish actions update the notebook at that URL.

Notebooks and clusters

Before you can do any work in a notebook, you must first attach the notebook to a cluster. This section describes how to attach and detach notebooks to and from clusters and what happens behind the scenes when you perform these actions.

Execution contexts

When you attach a notebook to a cluster, Databricks creates an execution context. An execution context contains the state for a REPL environment for each supported programming language: Python, R, Scala, and SQL. When you run a cell in a notebook, the command is dispatched to the appropriate language REPL environment and run.

You can also use the REST 1.2 API to create an execution context and send a command to run in the execution context. Similarly, the command is dispatched to the language REPL environment and run.

A cluster has a maximum number of execution contexts (145). Once the number of execution contexts has reached this threshold, you cannot attach a notebook to the cluster or create a new execution context.

Idle execution contexts

An execution context is considered idle when the last completed execution occurred past a set idle threshold. Last completed execution is the last time the notebook completed execution of commands. The idle threshold is the amount of time that must pass between the last completed execution and any attempt to automatically detach the notebook. The default idle threshold is 24 hours.

When a cluster has reached the maximum context limit, Databricks removes (evicts) idle execution contexts (starting with the least recently used) as needed. Even when a context is removed, the notebook using the context is still attached to the cluster and appears in the cluster’s notebook list. Streaming notebooks are considered actively running, and their context is never evicted until their execution has been stopped. If an idle context is evicted, the UI displays a message indicating that the notebook using the context was detached due to being idle.

Notebook context evicted

If you attempt to attach a notebook to cluster that has maximum number of execution contexts and there are no idle contexts (or if auto-eviction is disabled), the UI displays a message saying that the current maximum execution contexts threshold has been reached and the notebook will remain in the detached state.

Notebook detached

If you fork a process, an idle execution context is still considered idle once execution of the request that forked the process returns. Forking separate processes is not recommended with Spark.

Configure context auto-eviction

Auto-eviction is enabled by default. To disable auto-eviction for a cluster, set the Spark property.

Attach a notebook to a cluster

To attach a notebook to a cluster, you need the Can Attach To cluster-level permission.

To attach a notebook to a cluster:

  1. In the notebook toolbar, click Notebook Cluster IconDetachedCluster Dropdown.
  2. From the drop-down, select a cluster.


An attached notebook has the following Apache Spark variables defined.

ClassVariable Name
(Spark 2.x)

Do not create a , , or . Doing so will lead to inconsistent behavior.

Determine Spark and Databricks Runtime version

To determine the Spark version of the cluster your notebook is attached to, run:

To determine the Databricks Runtime version of the cluster your notebook is attached to, run:


Detach a notebook from a cluster

  1. In the notebook toolbar, click Notebook Cluster IconAttached <cluster-name>Cluster Dropdown.

  2. Select Detach.

    Detach notebook

You can also detach notebooks from a cluster using the Notebooks tab on the cluster details page.

When you detach a notebook from a cluster, the execution context is removed and all computed variable values are cleared from the notebook.


Databricks recommends that you detach unused notebooks from a cluster. This frees up memory space on the driver.

View all notebooks attached to a cluster

The Notebooks tab on the cluster details page displays all of the notebooks that are attached to a cluster. The tab also displays the status of each attached notebook, along with the last time a command was run from the notebook.

Cluster details attached notebooks

Schedule a notebook

To schedule a notebook job to run periodically:

  1. In the notebook, click Notebook schedule button at the top right. If no jobs exist for this notebook, the Schedule dialog appears.

    Schedule notebook dialog

    If jobs already exist for the notebook, the Jobs List dialog appears. To display the Schedule dialog, click Add a schedule.

    Job list dialog
  2. In the Schedule dialog, optionally enter a name for the job. The default name is the name of the notebook.

  3. Select Manual to run your job only when manually triggered, or Scheduled to define a schedule for running the job. If you select Scheduled, use the drop-downs to specify the frequency, time, and time zone.

  4. In the Cluster drop-down, select the cluster to run the task.

    If you have Allow Cluster Creation permissions, by default the job runs on a new job cluster. To edit the configuration of the default job cluster, click Edit at the right of the field to display the cluster configuration dialog.

    If you do not have Allow Cluster Creation permissions, by default the job runs on the cluster that the notebook is attached to. If the notebook is not attached to a cluster, you must select a cluster from the Cluster drop-down.

  5. Optionally, enter any Parameters to pass to the job. Click Add and specify the key and value of each parameter. Parameters set the value of the notebook widget specified by the key of the parameter. Use Task parameter variables to pass a limited set of dynamic values as part of a parameter value.

  6. Optionally, specify email addresses to receive Email Alerts on job events. See Alerts.

  7. Click Submit.

Manage scheduled notebook jobs

To display jobs associated with this notebook, click the Schedule button. The jobs list dialog displays, showing all jobs currently defined for this notebook. To manage jobs, click Jobs Vertical Ellipsis at the right of a job in the list.

Job list menu

From this menu, you can edit, clone, view, pause, resume, or delete a scheduled job.

When you clone a scheduled job, a new job is created with the same parameters as the original. The new job appears in the list with the name “Clone of <initial job name>”.

How you edit a job depends on the complexity of the job’s schedule. Either the Schedule dialog or the Job details panel displays, allowing you to edit the schedule, cluster, parameters, and so on.

Distribute notebooks

To allow you to easily distribute Databricks notebooks, Databricks supports the Databricks archive, which is a package that can contain a folder of notebooks or a single notebook. A Databricks archive is a JAR file with extra metadata and has the extension . The notebooks contained in the archive are in a Databricks internal format.

Import an archive

  1. Click Down Caret or Menu Dropdown to the right of a folder or notebook and select Import.
  2. Choose File or URL.
  3. Go to or drop a Databricks archive in the dropzone.
  4. Click Import. The archive is imported into Databricks. If the archive contains a folder, Databricks recreates that folder.

Export an archive

Click Down Caret or Menu Dropdown to the right of a folder or notebook and select Export > DBC Archive. Databricks downloads a file named .

Working With Notebooks in Azure Databricks

Use notebooks

A notebook is a collection of runnable cells (commands). When you use a notebook, you are primarily developing and running cells.

All notebook tasks are supported by UI actions, but you can also perform many tasks using keyboard shortcuts. Toggle the shortcut display by clicking the Keyboard Icon icon.

Keyboard shortcuts

Develop notebooks

This section describes how to develop notebook cells and navigate around a notebook.

About notebooks

A notebook has a toolbar that lets you manage the notebook and perform actions within the notebook:

Notebook toolbar

and one or more cells (or commands) that you can run:

Notebook cells

At the far right of a cell, the cell actions Cell actions, contains three menus: Run, Dashboard, and Edit:

Run IconDashboardEdit

and two actions: Hide Cell Minimize and Delete Delete Icon.

Add a cell

To add a cell, mouse over a cell at the top or bottom and click the Add Cell icon, or access the notebook cell menu at the far right, click Down Caret, and select Add Cell Above or Add Cell Below.

Delete a cell

Go to the cell actions menu Cell actions at the far right and click Delete Icon (Delete).

When you delete a cell, by default a delete confirmation dialog displays. To disable future confirmation dialogs, select the Do not show this again checkbox and click Confirm. You can also toggle the confirmation dialog setting with the Turn on command delete confirmation option in User Settings Icon> User Settings > Notebook Settings.

To restore deleted cells, either select Edit > Undo Delete Cells or use the () keyboard shortcut.

Cut a cell

Go to the cell actions menu Cell actions at the far right, click Down Caret, and select Cut Cell.

You can also use the () keyboard shortcut.

To restore deleted cells, either select Edit > Undo Cut Cells or use the () keyboard shortcut.

Select multiple cells or all cells

You can select adjacent notebook cells using Shift + Up or Down for the previous and next cell respectively. Multi-selected cells can be copied, cut, deleted, and pasted.

To select all cells, select Edit > Select All Cells or use the command mode shortcut Cmd+A.

Default language

The default language for each cell is shown in a (<language>) link next to the notebook name. In the following notebook, the default language is SQL.

Notebook default language

To change the default language:

  1. Click (<language>) link. The Change Default Language dialog displays.

    Change default language
  2. Select the new language from the Default Language drop-down.

  3. Click Change.

  4. To ensure that existing commands continue to work, commands of the previous default language are automatically prefixed with a language magic command.

Mix languages

You can override the default language by specifying the language magic command at the beginning of a cell. The supported magic commands are: , , , and .


When you invoke a language magic command, the command is dispatched to the REPL in the execution context for the notebook. Variables defined in one language (and hence in the REPL for that language) are not available in the REPL of another language. REPLs can share state only through external resources such as files in DBFS or objects in object storage.

Notebooks also support a few auxiliary magic commands:

  • : Allows you to run shell code in your notebook. To fail the cell if the shell command has a non-zero exit status, add the option. This command runs only on the Apache Spark driver, and not the workers. To run a shell command on all nodes, use an init script.
  • : Allows you to use filesystem commands. For example, to run the command to list files, you can specify instead. For more information, see Use %fs magic commands.
  • : Allows you to include various types of documentation, including text, images, and mathematical formulas and equations. See the next section.

Include documentation

To include documentation in a notebook you can use the magic command to identify Markdown markup. The included Markdown markup is rendered into HTML. For example, this Markdown snippet contains markup for a level-one heading:

%md # Hello This is a Title

It is rendered as a HTML title:

Notebook HTML title

Collapsible headings

Cells that appear after cells containing Markdown headings can be collapsed into the heading cell. The following image shows a level-one heading called Heading 1 with the following two cells collapsed into it.

Collapsed cells

To expand and collapse headings, click the + and -.

Also see Hide and show cell content.

To expand or collapse cells after cells containing Markdown headings throughout the notebook, select Expland all headings or Collapse all headings from the View menu.

expand-collapse all in the view menu

Link to other notebooks

You can link to other notebooks or folders in Markdown cells using relative paths. Specify the attribute of an anchor tag as the relative path, starting with a and then follow the same pattern as in Unix file systems:

%md <a href="$./myNotebook">Link to notebook in same folder as current notebook</a> <a href="$../myFolder">Link to folder in parent folder of current notebook</a> <a href="$./myFolder2/myNotebook2">Link to nested notebook</a>

Display images

To display images stored in the FileStore, use the syntax:

%md ![test](files/image.png)

For example, suppose you have the Databricks logo image file in FileStore:


When you include the following code in a Markdown cell:

Image in Markdown cell

the image is rendered in the cell:

Rendered image

Display mathematical equations

Notebooks support KaTeX for displaying mathematical formulas and equations. For example,

%md \\(c = \\pm\\sqrt{a^2 + b^2} \\) \\(A{_i}{_j}=B{_i}{_j}\\) $$c = \\pm\\sqrt{a^2 + b^2}$$ \\[A{_i}{_j}=B{_i}{_j}\\]

renders as:

Rendered equation 1


%md \\( f(\beta)= -Y_t^T X_t \beta + \sum log( 1+{e}^{X_t\bullet\beta}) + \frac{1}{2}\delta^t S_t^{-1}\delta\\) where \\(\delta=(\beta - \mu_{t-1})\\)

renders as:

Rendered equation 2

Include HTML

You can include HTML in a notebook by using the function . See HTML, D3, and SVG in notebooks for an example of how to do this.


The iframe is served from the domain and the iframe sandbox includes the attribute. must be accessible from your browser. If it is currently blocked by your corporate network, it must added to an allow list.

Change cell display

There are three display options for notebooks:

  • Standard view: results are displayed immediately after code cells
  • Results only: only results are displayed
  • Side-by-side: code and results cells are displayed side by side, with results to the right

Go to the View menu View Menu to select your display option.

side-by-side view

Show line and command numbers

To show line numbers or command numbers, go to the View menu View Menu and select Show line numbers or Show command numbers. Once they’re displayed, you can hide them again from the same menu. You can also enable line numbers with the keyboard shortcut Control+L.

Show line or command numbers via the view menu
Line and command numbers enabled in notebook

If you enable line or command numbers, Databricks saves your preference and shows them in all of your other notebooks for that browser.

Command numbers above cells link to that specific command. If you click the command number for a cell, it updates your URL to be anchored to that command. If you want to link to a specific command in your notebook, right-click the command number and choose copy link address.

Find and replace text

To find and replace text within a notebook, select Edit > Find and Replace. The current match is highlighted in orange and all other matches are highlighted in yellow.

Matching text

To replace the current match, click Replace. To replace all matches in the notebook, click Replace All.

To move between matches, click the Prev and Next buttons. You can also press shift+enter and enter to go to the previous and next matches, respectively.

To close the find and replace tool, click Delete Icon or press esc.


You can use Databricks autocomplete to automatically complete code segments as you type them. Databricks supports two types of autocomplete: local and server.

Local autocomplete completes words that are defined in the notebook. Server autocomplete accesses the cluster for defined types, classes, and objects, as well as SQL database and table names. To activate server autocomplete, attach your notebook to a cluster and run all cells that define completable objects.


Server autocomplete in R notebooks is blocked during command execution.

To trigger autocomplete, press Tab after entering a completable object. For example, after you define and run the cells containing the definitions of and , the methods of are completable, and a list of valid completions displays when you press Tab.

Trigger autocomplete

Type completion and SQL database and table name completion work in the same way.

Type Completion — — SQL Completion

In Databricks Runtime 7.4 and above, you can display Python docstring hints by pressing Shift+Tab after entering a completable Python object. The docstrings contain the same information as the function for an object.

Python docstring

Format SQL

Databricks provides tools that allow you to format SQL code in notebook cells quickly and easily. These tools reduce the effort to keep your code formatted and help to enforce the same coding standards across your notebooks.

You can trigger the formatter in the following ways:

  • Single cells

    • Keyboard shortcut: Press Cmd+Shift+F.

    • Command context menu: Select Format SQL in the command context drop-down menu of a SQL cell. This item is visible only in SQL notebook cells and those with a language magic.

      Formatting SQL From Command Context
  • Multiple cells

    Select multiple SQL cells and then select Edit > Format SQL Cells. If you select cells of more than one language, only SQL cells are formatted. This includes those that use .

    Formatting SQL From Edit Menu

Here’s the first cell in the preceding example after formatting:

After Formatting SQL

View table of contents

To display an automatically generated table of contents, click the arrow at the upper left of the notebook (between the sidebar and the topmost cell). The table of contents is generated from the Markdown headings used in the notebook.

Open TOC

To close the table of contents, click the left-facing arrow.

Close TOC

View notebooks in dark mode

You can choose to display notebooks in dark mode. To turn dark mode on or off, select View > Notebook Theme and select Light Theme or Dark Theme.

Notebook light or dark mode

Run notebooks

This section describes how to run one or more notebook cells.


The notebook must be attached to a cluster. If the cluster is not running, the cluster is started when you run one or more cells.

Run a cell

In the cell actions menu Cell actions at the far right, click Run Icon and select Run Cell, or press shift+enter.


The maximum size for a notebook cell, both contents and output, is 16MB.

For example, try running this Python code snippet that references the predefined variable.

and then, run some real code:


Notebooks have a number of default settings:

  • When you run a cell, the notebook automatically attaches to a running cluster without prompting.
  • When you press shift+enter, the notebook auto-scrolls to the next cell if the cell is not visible.

To change these settings, select User Settings Icon> User Settings > Notebook Settings and configure the respective checkboxes.

Run all above or below

To run all cells before or after a cell, go to the cell actions menu Cell actions at the far right, click Run Menu, and select Run All Above or Run All Below.

Run All Below includes the cell you are in. Run All Above does not.

Run all cells

To run all the cells in a notebook, select Run All in the notebook toolbar.


Do not do a Run All if steps for mount and unmount are in the same notebook. It could lead to a race condition and possibly corrupt the mount points.

View multiple outputs per cell

Python notebooks and cells in non-Python notebooks support multiple outputs per cell.

Multiple outputs in one cell

This feature requires Databricks Runtime 7.1 or above and can be enabled in Databricks Runtime 7.1-7.3 by setting . It is enabled by default in Databricks Runtime 7.4 and above.

Python and Scala error highlighting

Python and Scala notebooks support error highlighting. That is, the line of code that is throwing the error will be highlighted in the cell. Additionally, if the error output is a stacktrace, the cell in which the error is thrown is displayed in the stacktrace as a link to the cell. You can click this link to jump to the offending code.

Python error highlighting
Scala error highlighting


Notifications alert you to certain events, such as which command is currently running during Run all cells and which commands are in error state. When your notebook is showing multiple error notifications, the first one will have a link that allows you to clear all notifications.

Notebook notifications

Notebook notifications are enabled by default. You can disable them under User Settings Icon> User Settings > Notebook Settings.

Databricks Advisor

Databricks Advisor automatically analyzes commands every time they are run and displays appropriate advice in the notebooks. The advice notices provide information that can assist you in improving the performance of workloads, reducing costs, and avoiding common mistakes.

View advice

A blue box with a lightbulb icon signals that advice is available for a command. The box displays the number of distinct pieces of advice.

Databricks advice

Click the lightbulb to expand the box and view the advice. One or more pieces of advice will become visible.

View advice

Click the Learn more link to view documentation providing more information related to the advice.

Click the Don’t show me this again link to hide the piece of advice. The advice of this type will no longer be displayed. This action can be reversed in Notebook Settings.

Click the lightbulb again to collapse the advice box.

Advice settings

Access the Notebook Settings page by selecting User Settings Icon> User Settings > Notebook Settings or by clicking the gear icon in the expanded advice box.

Notebook settings

Toggle the Turn on Databricks Advisor option to enable or disable advice.

The Reset hidden advice link is displayed if one or more types of advice is currently hidden. Click the link to make that advice type visible again.

Run a notebook from another notebook

You can run a notebook from another notebook by using the magic command. This is roughly equivalent to a command in a Scala REPL on your local machine or an statement in Python. All variables defined in become available in your current notebook.

must be in a cell by itself, because it runs the entire notebook inline.


You cannot use to run a Python file and the entities defined in that file into a notebook. To import from a Python file you must package the file into a Python library, create a Databricks library from that Python library, and install the library into the cluster you use to run your notebook.


Suppose you have and . contains a cell that has the following Python code:

Even though you did not define in , you can access in after you run .

%run/Users/path/to/notebookAprint(x)# => 5

To specify a relative path, preface it with or . For example, if and are in the same directory, you can alternatively run them from a relative path.

%run./notebookAprint(x)# => 5
%run../someDirectory/notebookA# up a directory and into anotherprint(x)# => 5

For more complex interactions between notebooks, see Notebook workflows.

Manage notebook state and results

After you attach a notebook to a cluster and run one or more cells, your notebook has state and displays results. This section describes how to manage notebook state and results.

Download a cell result

You can download a cell result that contains tabular output to your local machine. Click the Download Result button at the bottom of a cell.

Download cell results

A CSV file named is downloaded to your default download directory.

Download full results

By default Databricks returns 1000 rows of a DataFrame. When there are more than 1000 rows, an option appears to re-run the query and display up to 10,000 rows.

Option to re-run

When a query returns more than 1000 rows, a down arrow Button Down is added to the Download Result button. To download all the results of a query:

  1. Click the down arrow next to Download Result and select Download full results.

    Download full results
  2. Select Re-execute and download.

    Re-run and download results

    After you download full results, a CSV file named is downloaded to your local machine and the folder has a generated folder containing full the query results.

    Downloaded results

Hide and show cell content

Cell content consists of cell code and the result of running the cell. You can hide and show the cell code and result using the cell actions menu Cell actions at the top right of the cell.

To hide cell code:

  • Click Down Caret and select Hide Code

To hide and show the cell result, do any of the following:

  • Click Down Caret and select Hide Result
  • Select Cell Minimize
  • Type Esc > Shift + o

To show hidden cell code or results, click the Show links:

Show hidden code and results

See also Collapsible headings.

Notebook isolation

Notebook isolation refers to the visibility of variables and classes between notebooks. Databricks supports two types of isolation:

  • Variable and class isolation
  • Spark session isolation


Since all notebooks attached to the same cluster execute on the same cluster VMs, even with Spark session isolation enabled there is no guaranteed user isolation within a cluster.

Variable and class isolation

Variables and classes are available only in the current notebook. For example, two notebooks attached to the same cluster can define variables and classes with the same name, but these objects are distinct.

To define a class that is visible to all notebooks attached to the same cluster, define the class in a package cell. Then you can access the class by using its fully qualified name, which is the same as accessing a class in an attached Scala or Java library.

Spark session isolation

Every notebook attached to a cluster running Apache Spark 2.0.0 and above has a pre-defined variable called that represents a . is the entry point for using Spark APIs as well as setting runtime configurations.

Spark session isolation is enabled by default. You can also use global temporary views to share temporary views across notebooks. See Create View or CREATE VIEW. To disable Spark session isolation, set to in the Spark configuration.


Setting true breaks the monitoring used by both streaming notebook cells and streaming jobs. Specifically:

  • The graphs in streaming cells are not displayed.
  • Jobs do not block as long as a stream is running (they just finish “successfully”, stopping the stream).
  • Streams in jobs are not monitored for termination. Instead you must manually call .
  • Calling the display function on streaming DataFrames doesn’t work.

Cells that trigger commands in other languages (that is, cells using , , , and ) and cells that include other notebooks (that is, cells using ) are part of the current notebook. Thus, these cells are in the same session as other notebook cells. By contrast, a notebook workflow runs a notebook with an isolated , which means temporary views defined in such a notebook are not visible in other notebooks.

Version control

Databricks has basic version control for notebooks. You can perform the following actions on revisions: add comments, restore and delete revisions, and clear revision history.

To access notebook revisions, click Revision History at the top right of the notebook toolbar.

Revision history

Restore a revision

To restore a revision:

  1. Click the revision.

  2. Click Restore this revision.

    Restore revision
  3. Click Confirm. The selected revision becomes the latest revision of the notebook.

Delete a revision

To delete a notebook’s revision entry:

  1. Click the revision.

  2. Click the trash icon Trash.

    Delete revision
  3. Click Yes, erase. The selected revision is deleted from the notebook’s revision history.

Clear a revision history

To clear a notebook’s revision history:

  1. Select File > Clear Revision History.

  2. Click Yes, clear. The notebook revision history is cleared.


    Once cleared, the revision history is not recoverable.


Notebook azure databricks

Getting started with Azure Databricks, the Apache Spark based analytics service

Databricks is a web-based platform for working with Apache Spark, that provides automated cluster management and IPython-style notebooks.  To understand the basics of Apache Spark, refer to our earlier blog on how Apache Spark works

Databricks is currently available on Microsoft Azure and Amazon AWS.  In this blog, we will look at some of the components in Azure Databricks.

1.   Workspace

A Databricks Workspace is an environment for accessing all Databricks assets. The Workspace organizes objects (notebooks, libraries, and experiments) into folders, and provides access to data and computational resources such as clusters and jobs.

Create a Databricks workspace

The first step to using Azure Databricks is to create and deploy a Databricks workspace. You can do this in the Azure portal.

  1. In the Azure portal, select Create a resource > Analytics > Azure Databricks.
  2. Under Azure Databricks Service, provide the values to create a Databricks workspace.

    a. Workspace Name: Provide a name for your workspace.
    b. Subscription: Choose the Azure subscription in which to deploy the workspace.
    c. Resource Group: Choose the Azure resource group to be used.
    d. Location: Select the Azure location near you for deployment.
    e. Pricing Tier: Standard or Premium

Once the Azure Databricks service is created, you will get the screen given below.  Clicking on the Launch Workspace button will open the workspace in a new tab of the browser.

2.   Cluster

A Databricks cluster is a set of computation resources and configurations on which we can run data engineering, data science, and data analytics workloads, such as production ETL pipelines, streaming analytics, ad-hoc analytics, and machine learning.

To create a new cluster:

  1. Select Clusters from the left-hand menu of Databricks’ workspace.
  2. Select Create Cluster to add a new cluster.

We can select the Scala and Spark versions by selecting the appropriate Databricks Runtime Version while creating the cluster.

3.   Notebooks

A notebook is a web-based interface to a document that contains runnable code, visualizations, and narrative text.  We can create a new notebook using either the “Create a Blank Notebook” link in the Workspace (or) by selecting a folder in the workspace and then using the Create >> Notebook menu option.

While creating the notebook, we must select a cluster to which the notebook is to be attached and also select a programming language for the notebook – Python, Scala, SQL, and R are the languages supported in Databricks notebooks.

The workspace menu also provides us the option to import a notebook, by uploading a file (or) specifying a file.  This is helpful if we want to import (Python / Scala) code developed in another IDE (or) if we must import code from an online source control system like git.

In the below notebook we have python code executed in cells Cmd 2 and Cmd 3; a python spark code executed in Cmd 4.  The first cell (Cmd 1) is a Markdown cell.  It displays text which has been formatted using markdown language.

Magic commands

Even though the above notebook was created with Language as python, each cell can have code in a different language using a magic command at the beginning of the cell.  The markdown cell above has the code below where %md is the magic command:

%md Sample Databricks Notebook

The following provides the list of supported magic commands:

  • %python – Allows us to execute Python code in the cell.
  • %r – Allows us to execute R code in the cell.
  • %scala – Allows us to execute Scala code in the cell.
  • %sql – Allows us to execute SQL statements in the cell.
  • %sh – Allows us to execute Bash Shell commands and code in the cell.
  • %fs – Allows us to execute Databricks Filesystem commands in the cell.
  • %md – Allows us to render Markdown syntax as formatted content in the cell.
  • %run – Allows us to run another notebook from a cell in the current notebook.

4.   Libraries

To make third-party or locally built code available (like .jar files) to notebooks and jobs running on our clusters, we can install a library. Libraries can be written in Python, Java, Scala, and R. We can upload Java, Scala, and Python libraries and point to external packages in PyPI, or Maven.

To install a library on a cluster, select the cluster going through the Clusters option in the left-side menu and then go to the Libraries tab.

Clicking on the “Install New” option provides us with all the options available for installing a library.  We can install the library either uploading it as a Jar file or getting it from a file in DBFS (Data Bricks File System).  We can also instruct Databricks to pull the library from Maven or PyPI repository by providing the coordinates.

5. Jobs

During code development, notebooks are run interactively in the notebook UI.  A job is another way of running a notebook or JAR either immediately or on a scheduled basis.

We can create a job by selecting Jobs from the left-side menu and then provide the name of job, notebook to be run, schedule of the job (daily, hourly, etc.)

Once the jobs are scheduled, the jobs can be monitored using the same Jobs menu.

6.   Databases and tables

A Databricks database is a collection of tables. A Databricks table is a collection of structured data. Tables are equivalent to Apache Spark DataFrames. We can cache, filter, and perform any operations supported by DataFrames on tables. You can query tables with Spark APIs and Spark SQL.

Databricks provides us the option to create new Tables by uploading CSV files; Databricks can even infer the data type of the columns in the CSV file.

All the databases and tables created either by uploading files (or) through Spark programs can be viewed using the Data menu option in Databricks workspace and these tables can be queried using SQL notebooks.

We hope this article helps you getting started with Azure Databricks. You can now spin up clusters and build quickly in a fully managed Apache Spark environment with the global scale and availability of Azure.

Working With Notebooks in Azure Databricks


Now discussing:


513 514 515 516 517