DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports
Events Video Library
Refcards
Trend Reports

Events

View Events Video Library

Related

  • Low Code Approach for Building a Serverless REST API
  • How to Configure AWS Glue Job Using Python-Based AWS CDK
  • Migrating MuleSoft System API to AWS Lambda (Part 1)
  • NewRelic Logs With Logback on Azure Cloud

Trending

  • Building a RAG-Powered Bug Triage Agent With AWS Bedrock and OpenSearch k-NN
  • How SaaS Architectures Break at Scale — and the Engineering Decisions That Prevent It
  • The Agentic Agile Office: Streamlining Enterprise Agile With Autonomous AI Agents
  • Stateless JWT Auth Microservice Architecture With Spring Boot 3 and Redis Sentinel
  1. DZone
  2. Software Design and Architecture
  3. Cloud Architecture
  4. Implementing Budget Policies and Budget Limits on Databricks

Implementing Budget Policies and Budget Limits on Databricks

This guide walks us through the steps to implement Budget policies and Budget Policy limits on Serverless Compute in Databricks to account cost in an effective approach.

By 
Prasath Chetty Pandurangan user avatar
Prasath Chetty Pandurangan
·
Aug. 29, 25 · Tutorial
Likes (1)
Comment
Save
Tweet
Share
3.9K Views

Join the DZone community and get the full member experience.

Join For Free

This guide walks us through the steps to implement Budget Policies and Budget Policy limits on Serverless Compute in Databricks to effectively and accurately compute the costs incurred for compute usage. This guide covers step by step process of the implementation on the data platform to monitor and account for the cost incurred effectively.

Pre-Requisites

  • Databricks Admin access to set policies, view usage, manage tokens
  • Cluster Policy enabled to restrict compute types, enforce limits
  • Tags in place for team/project-level cost tracking
  • REST API/token access  for automation and enforcement
  • Reporting tools to visualize and alert on usage
  • Communication plan to ensure user awareness and adoption

Introduction

Databricks becomes central to analytics and AI pipelines, it's crucial to balance performance with cost control. Serverless compute simplifies scalability, but without budget policies and usage limits, costs can spiral.

Key Features

Feature

Description

Spending Limits

Define monthly, quarterly, or custom financial limits at workspace, project, or team level.

Threshold Alerts

Send automated notifications when a specific percentage (e.g., 50%, 80%, 100%) of the budget is consumed.

Cost Attribution (Tagging)

Use tags like CostCenter, Team, or Environment to allocate and monitor costs per unit of responsibility.

Policy-Based Resource Constraints

Limit compute options (e.g., max number of workers, serverless-only) through Databricks cluster policies.

Job Scheduling Controls

Define when jobs can run (e.g., business hours only), or restrict compute-heavy jobs in low-priority environments.

Enforcement Actions

Trigger automated actions like stopping jobs, disabling schedules, or sending alerts when budget limits are exceeded.

Granular Scope

Apply policies at user, group, job, or workspace level for fine-grained budget control.

Usage Tracking and Reporting

Monitor real-time usage against the defined budget via dashboards and reports.

Integration with Cloud Budgets

Leverage Azure, AWS, or GCP budgeting tools to create alerts and link with Databricks enforcement workflows.

Auto-termination Policies

Enforce idle timeouts or automatic shutdown for serverless jobs or clusters to reduce unnecessary cost.

Audit & Governance Support

Enable visibility for stakeholders and ensure compliance with financial operations (FinOps) goals.


Setup Process Walkthrough

This article shows steps to implement budget policies and enforce usage limits in Databricks Serverless Compute, with practical examples using cluster policies, cloud budgets, REST APIs, and automation tools.

1. Set Cost-Controlling Cluster Policies

Databricks cluster policies help you enforce limits on how serverless compute resources are provisioned.

Example: Cluster Policy to Limit Max Cluster Size and Use Serverless Only

JSON
 
{
"spark_version": {
"type": "fixed",
"value": "13.3.x-scala2.12"
},
"node_type_id": {
"type": "fixed",
"value": "Serverless"
},
"autoscale.min_workers": {
"type": "fixed",
"value": 1
},
"autoscale.max_workers": {
"type": "range",
"minValue": 1,
"maxValue": 5,
"defaultValue": 3
},

"autotermination_minutes": {
"type": "fixed",
"value": 15
}
}


Explanation of what the above code does:

  • Restricts usage to serverless compute
  • Limits max workers to 5
  • Auto-terminates idle clusters after 15 minutes

2. Use Cloud Budget Alerts (Azure, AWS, GCP)

You can set monthly spend limits using your cloud provider, and trigger alerts when thresholds are crossed.

 Example: Azure Budget to Limit Databricks Spend

  1. Go to Azure Cost Management > Budgets
  2. Create a new budget:
  3. Scope: Resource group or subscription
    • Amount: e.g., 1,000/month
    • Alert: When 80% of budget is consumed
  4. Set up an Action Group to:
    • Send email or
    • Trigger a Logic App that calls the Databricks Jobs API to pause workloads

3. Automate Job Termination When Budget is Exceeded

When a budget is breached, use automation to cancel jobs or disable job schedules.

Example: Logic App or Lambda Calling Databricks REST API

Step A: Create a Logic App (Azure) or Lambda (AWS) that does:

Shell
 
bash
curl -X POST https://<databricks-instance>/api/2.1/jobs/runs/cancel \
-H "Authorization: Bearer <DATABRICKS_TOKEN>" \
 -d '{ "run_id": 123456 }'


You can dynamically fetch run_id based on workspace or job owner tags if needed.

Step B: Trigger the automation from a budget alert (via webhook or SNS)

4. Monitor and Report Usage with Tags

Apply tags to jobs or clusters to enable cost attribution.

Example: Tagging a Job with Cost Center

JSON
 
json
{
"name": "daily-sales-job",
"new_cluster": {
"spark_version": "13.3.x-scala2.12",
"node_type_id": "Serverless",
"custom_tags": {
"Team": "Sales",
"CostCenter": "CC1002"
}
},
"notebook_task": {
"notebook_path": "/Users/sales_team/daily_aggregation"
}
 }


5. Use Databricks Usage Data for Dashboards

Use built-in usage logs or Unity Catalog billing views (if enabled) to track usage.

Example Query in Databricks SQL

SQL
 
sql
SELECT user_name, cluster_name, SUM(dbus_consumed) AS total_dbus,
DATE(run_start_time) AS run_date
FROM system.billing.usage
WHERE run_date >= CURRENT_DATE - 30
GROUP BY user_name, cluster_name, run_date
 ORDER BY   total_dbus DESC;


NOTE :  Use this SQL for dashboards in Power BI, Tableau, or Databricks SQL alerts (e.g., notify if a user exceeds 500 DBUs in a day).

Best Practices

Action

Tool

Restrict compute usage

Cluster Policies

Monitor real-time spend

Cloud Budgets + Alerts

Enforce limits

Automation (Logic Apps, Lambda, Functions)

Attribute spend

Tags (e.g., CostCenter, Team)

Report usage

Databricks Usage Logs + SQL


Limitations of Budget Policies

Limitation

Description

No Native Hard Stop in Databricks

Databricks does not currently support automatic job or cluster shutdown when budget thresholds are breached enforcement must be implemented via external automation (e.g., Azure Logic Apps, AWS Lambda).

Reactive, Not Preventive

Budget alerts notify you after thresholds are approached or exceeded. There is no native preemptive enforcement.

Limited Integration with Cloud Budgets

Budget policies must be manually integrated with cloud tools (e.g., Azure Budget alerts triggering Databricks APIs); this is not out-of-the-box.

No Usage Quotas Per User/Group

Databricks doesn't provide built-in usage quotas for individual users or groups (e.g., max 300 DBUs per user/month). Such enforcement must be custom-built.

Granular Usage Data Delays

Cost and DBU usage reports may be delayed by a few hours. This lag can cause late reaction to budget thresholds being breached.

Tagging Inconsistencies

Budget tracking by tags depends on consistent tagging by users. If teams forget or misuse tags, cost attribution and limits become inaccurate.

No Budget Enforcement in UI

You can't configure or enforce budget policies directly in the Databricks UI cluster policies help, but full budget logic is enforced through cloud platforms and APIs.

Only Works Within One Workspace

Budget controls are scoped to individual Databricks workspaces. Multi-workspace policies require additional tooling to aggregate and enforce across environments.

Does Not Block Notebook Execution

Even if budgets are exceeded, users can still manually run notebooks unless explicit API-based controls are put in place.

Lack of Budget Rollovers

Budgets reset on fixed cycles (e.g., monthly), and there’s no native concept of unused budget rollover into the next period.


Conclusion

Controlling costs in serverless compute environments is critical for scaling Databricks sustainably. By combining native cluster policies, cloud budgeting tools, and automated enforcement, you can ensure teams stay within budget while still benefiting from the performance of serverless computing.

API AWS AWS Lambda JSON REST azure career Cloud cluster teams

Opinions expressed by DZone contributors are their own.

Related

  • Low Code Approach for Building a Serverless REST API
  • How to Configure AWS Glue Job Using Python-Based AWS CDK
  • Migrating MuleSoft System API to AWS Lambda (Part 1)
  • NewRelic Logs With Logback on Azure Cloud

Partner Resources

×

Comments

The likes didn't load as expected. Please refresh the page and try again.

  • RSS
  • X
  • Facebook

ABOUT US

  • About DZone
  • Support and feedback
  • Community research

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Core Program
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 3343 Perimeter Hill Drive
  • Suite 215
  • Nashville, TN 37211
  • [email protected]

Let's be friends:

  • RSS
  • X
  • Facebook