Databricks CLI
Go to file
shreyas-goenka b323703c1b
Add validation for single node clusters (#1909)
## Changes
This PR adds a warning validating that the configuration for a single
node cluster is valid for interactive, job, job-task, and pipeline
clusters.

Note: We skip the validation if a cluster policy is configured because
the policy is likely to configure `spark_conf` / `custom_tags` itself.

Note: Terrform originally only had validation for interactive, job, and
job-task clusters. This PR adding the validation for pipeline clusters
as well is new.

This PR follows the same logic as we used to have in Terraform. The
validation was removed from Terraform because we had no way to demote
the error to a warning:
https://github.com/databricks/terraform-provider-databricks/pull/4222

### Background
Single-node clusters require `spark_conf` and `custom_tags` to be
correctly set in the cluster definition for them to function optimally.
The cluster will be created even if incorrectly configured, but its
performance will not be great.

For example, if both `spark_conf` and `custom_tags` are not set and
`num_workers` is 0, then only the driver process will be launched on the
cluster compute instance thus leading to sub-optimal utilization of
available compute resources and no parallelization across worker
processes when processing a spark query.

### Issue

This PR addresses some issues reported in
https://github.com/databricks/cli/issues/1546

## Tests
Unit tests and manually.

Example output of the warning:
```
➜  bundle-playground git:(master) ✗ cli bundle validate
Warning: Single node cluster is not correctly configured
  at resources.pipelines.bar.clusters[0]
  in databricks.yml:29:11

num_workers should be 0 only for single-node clusters. To create a
valid single node cluster please ensure that the following properties
are correctly set in the cluster specification:

  spark_conf:
    spark.databricks.cluster.profile: singleNode
    spark.master: local[*]

  custom_tags:
    ResourceClass: SingleNode
  

Name: foobar
Target: default
Workspace:
  User: shreyas.goenka@databricks.com
  Path: /Workspace/Users/shreyas.goenka@databricks.com/.bundle/foobar/default

Found 1 warning
```
2024-11-22 15:48:09 +00:00
.codegen Breakout variable lookup into separate files and tests (#1921) 2024-11-21 11:28:50 +01:00
.github [Internal] Always write message for manual integration test trigger (#1874) 2024-10-31 14:29:08 +00:00
.vscode Update VS Code settings to match latest value from IDE plugin (#1677) 2024-08-14 13:21:40 +00:00
bundle Add validation for single node clusters (#1909) 2024-11-22 15:48:09 +00:00
cmd Update filenames used by bundle generate to use `.<resource-type>.yml` (#1901) 2024-11-20 13:53:25 +01:00
docker Followup improvements to the Docker setup script (#1369) 2024-04-18 20:52:11 +00:00
docs Removed autogenerated docs for the CLI commands (#1392) 2024-04-23 13:25:25 +00:00
internal Fix `TestAccBundleInitOnMlopsStacks` (#1924) 2024-11-21 10:46:24 +00:00
libs Fix template initialization when running on Databricks (#1912) 2024-11-20 11:42:23 +00:00
.codegen.json Breakout variable lookup into separate files and tests (#1921) 2024-11-21 11:28:50 +01:00
.gitattributes Breakout variable lookup into separate files and tests (#1921) 2024-11-21 11:28:50 +01:00
.gitignore Add a foundation for built-in templates (#685) 2023-08-25 09:03:42 +00:00
.goreleaser.yaml Address goreleaser deprecation warning (#1872) 2024-10-31 12:09:23 +00:00
.mockery.yaml Use mockery to generate mocks compatible with testify/mock (#1190) 2024-02-08 15:18:53 +00:00
CHANGELOG.md [Release] Release v0.235.0 (#1918) 2024-11-20 14:48:18 +00:00
Dockerfile Followup improvements to the Docker setup script (#1369) 2024-04-18 20:52:11 +00:00
LICENSE Trim trailing whitespace (#1206) 2024-02-15 16:23:48 +00:00
Makefile `make snapshot` to build file in `.databricks/databricks` (#927) 2023-10-27 10:50:41 +00:00
NOTICE Add NOTICE for using Terraform 1.5.5 licensed under MPL 2.0 (#1377) 2024-04-19 11:44:05 +00:00
README.md Add privacy notice to README (#1841) 2024-10-28 18:19:55 +00:00
go.mod Bump github.com/databricks/databricks-sdk-go from 0.49.0 to 0.51.0 (#1878) 2024-11-13 13:40:53 +00:00
go.sum Bump github.com/databricks/databricks-sdk-go from 0.49.0 to 0.51.0 (#1878) 2024-11-13 13:40:53 +00:00
main.go Add regression tests for CLI error output (#1566) 2024-07-10 06:38:06 +00:00
main_test.go Fix ability to import the CLI repository as module (#1671) 2024-08-12 14:20:04 +00:00

README.md

Databricks CLI

build

This project is in Public Preview.

Documentation is available at https://docs.databricks.com/dev-tools/cli/databricks-cli.html.

Installation

This CLI is packaged as a dependency-free binary executable and may be located in any directory. See https://github.com/databricks/cli/releases for releases and the Databricks documentation for detailed information about installing the CLI.


Homebrew

We maintain a Homebrew tap for installing the Databricks CLI. You can find instructions for how to install, upgrade and downgrade the CLI using Homebrew here.


Docker

You can use the CLI via a Docker image by pulling the image from ghcr.io. You can find all available versions at: https://github.com/databricks/cli/pkgs/container/cli.

docker pull ghcr.io/databricks/cli:latest

Example of how to run the CLI using the Docker image. More documentation is available at https://docs.databricks.com/dev-tools/bundles/airgapped-environment.html.

docker run -e DATABRICKS_HOST=$YOUR_HOST_URL -e DATABRICKS_TOKEN=$YOUR_TOKEN ghcr.io/databricks/cli:latest current-user me

Authentication

This CLI follows the Databricks Unified Authentication principles.

You can find a detailed description at https://github.com/databricks/databricks-sdk-go#authentication.

Privacy Notice

Databricks CLI use is subject to the Databricks License and Databricks Privacy Notice, including any Usage Data provisions.