Databricks compute has several access modes, but Single User mode is the most flexible — it runs "dedicated to one user." It is the only mode that supports ML development, distributed training, and low-level Spark APIs (RDD / SparkContext) all at once, and under Unity Catalog data access is controlled using "the credentials of the attached user."
This article breaks down how Single User mode's execution identity works, the permission boundaries under UC, and the concrete differences between ML workload and SQL execution paths — plus the exam talking points and the design criteria you actually use in production.
Single User is an access mode that dedicates a cluster to a single user. When you create the cluster, select "Single User" and pick a target user — no one else will be able to attach to the cluster. Concurrent notebook use is not possible, so it is not suited to team-wide sharing, but it has the following advantages no other mode can match:
The most important characteristic of Single User mode is its "execution identity." In this mode, every piece of code that runs on the cluster (SQL / Python / Scala / R) runs with the credentials of the user attached to the cluster.
Concretely, here is how it behaves:
| Operation | Identity Used | Impact |
|---|---|---|
| SELECT on a UC table from a notebook | The attached user | A GRANT to that user is required |
| Reading cloud storage directly from a notebook | The attached user (via an External Location) | READ_FILES permission is required |
| Running as a job | The job owner (may differ from the cluster's designated user) | A GRANT to the job owner is required |
| DLT pipelines | The pipeline owner | DLT internally launches a Single-User-equivalent cluster |
Understanding exactly "whose permissions are used for access" is critical both on the exam and in real work. In particular, for job runs the job owner's permissions are used — not the user attached to the cluster — which often leads to the classic problem of "the table I could read in the notebook can't be read once it runs as a job."
In a Unity Catalog (UC) environment, Single User mode functions as the minimum unit of data governance. In workspaces where UC is enabled, data access always flows through UC's permission model (GRANT / DENY).
Here are the key points for understanding the permission boundaries:
Running an ML workload on a Single User cluster takes a very different internal path from running SQL. The comparison table below lays out the differences:
| Aspect | ML workload (Python / DBR ML) | SQL execution (notebook SQL / Spark SQL API) |
|---|---|---|
| Execution engine | Python process on the Spark driver + Spark workers | Spark SQL engine (Catalyst → Photon) |
| Photon acceleration | Not supported (Pandas UDFs etc. run in the Python process) | Supported (on Photon-enabled clusters) |
| UC permission check | Checked at table read/write time | Checked at query parsing time |
| Distributed processing | Horovod / TorchDistributor / Spark ML Pipeline | Standard Spark parallelism |
| Library restrictions | None (pip install is unrestricted) | None (you can also define UDFs) |
| GPU usage | Supported (when you choose a GPU cluster) | Not supported (GPUs are not leveraged) |
| MLflow integration | Automatic logging supported (autolog) | You have to log manually |
When you "run SQL" on Databricks, there are two options: running SQL on a Single User cluster, or using a Databricks SQL Warehouse (Serverless / Pro / Classic). Here is how they compare.
| Comparison | SQL on a Single User cluster | SQL Warehouse |
|---|---|---|
| Compute resource | User-dedicated cluster | Shared, SQL-optimized engine |
| Photon | Only on Photon-enabled clusters | Built in by default |
| Mixing Python / Scala | Possible | Not possible (SQL only) |
| Cost characteristics | Always billed while the cluster is running | With Serverless, auto-stop and prorated billing |
| Execution identity | The attached user | The user running the query |
| BI connectivity (JDBC/ODBC) | Not recommended | Recommended |
On the exam this often shows up as: "Which compute should you use if you want to mix Python and SQL in your ETL pipeline?" The answer is a Single User cluster (or a Job Cluster) — SQL Warehouse cannot run Python.
Delta Live Tables (DLT) pipelines automatically spin up a Single-User-equivalent cluster internally. You don't have to configure the cluster explicitly — the DLT runtime picks suitable settings. In that case the execution identity is the pipeline owner.
Job Clusters are usually created in Single User mode as well. When you define the job you specify "Single User," and data is accessed using the job owner's permissions. Unlike an All-Purpose Cluster, the cluster is automatically torn down once the job finishes, making it more cost-efficient.
Here are the best practices for using Single User mode in production:
Single User mode shows up frequently on Data Engineer Associate / ML Associate / ML Professional. The main question patterns are:
ML Associate / ML Professional
問題 1
A data scientist wants to run distributed training with PyTorch in a Databricks notebook. In a Unity-Catalog-enabled environment, which cluster configuration is most appropriate?
正解: B
Distributed PyTorch training requires the DBR ML Runtime and TorchDistributor, which are supported only in Single User mode. Shared mode does not let you pick the ML Runtime, SQL Warehouse is SQL-only, and No Isolation Shared mode cannot be used in a UC-enabled environment.
How are Unity Catalog permission checks performed in Single User mode?
The credentials of the user attached to the cluster are used for all data access. When you run a SELECT on a UC table from a notebook, Databricks checks whether that user has the necessary GRANT, and returns AccessDenied if not. For job runs, the job owner's credentials are used instead, so developers and job owners may see different data — something to watch out for.
Can I use ML libraries (scikit-learn, TensorFlow, etc.) on a Single User cluster?
Yes. Single User is the only access mode that fully supports the ML Runtime (DBR ML). In addition to libraries such as scikit-learn, TensorFlow, PyTorch, and Hugging Face, distributed training (Horovod / TorchDistributor) is also available only on Single User. Shared mode does not allow you to pick the ML Runtime at all, so Single User is mandatory for ML workloads.
Should I choose Single User mode or Shared mode?
There are two key criteria: (1) do you need ML / distributed training / custom UDFs, and (2) do you want to prioritize cost efficiency? If you need ML development or low-level APIs (RDD, SparkContext), Single User is the only choice. If multiple users share the same cluster for SQL-based analytics or ETL to keep costs down, Shared mode is the better fit. Exams frequently test this trade-off.
Practice with certification-focused question sets
無料で問題を解いてみるNicheeLab Editorial Team
NicheeLab editorial team focused on data engineering and cloud certification learning. Content is structured around practical study needs and official exam domains.
Databricks Certifications: All 7 Exams, Difficulty & Study Plan (2026)
Complete guide to all 7 Databricks certifications — Data Eng...
Databricks Exam Difficulty Ranking: All 7 Certs Compared (2026)
Every Databricks certification ranked by difficulty, with st...
Databricks Study Guide: Fastest Pass Route & Time Estimates (2026)
How to pass Databricks certifications efficiently. Official ...
Databricks Data Engineer Associate: Complete Guide (2026)
Domain-by-domain breakdown of the Databricks Certified Data ...
Databricks Data Engineer Professional: Complete Guide (2026)
Tactics for the Databricks Certified Data Engineer Professio...