Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här sidan beskriver Azure Databricks REST API, hur man kallar det och några bästa praxis.
För fullständig referens för Databricks REST API, se Databricks REST API-referens.
Note
Med undantag för avancerade scenarier rekommenderar Databricks att använda Databricks SDK:er eller Databricks CLI istället för Databricks REST API för att programmatiskt hantera Databricks-objekt.
Arbetsyta kontra konto: REST-API:er
Azure Databricks tillhandahåller två uppsättningar REST-API:er. Workspace-API:er hanterar resurser inom en enda arbetsyta, såsom kluster, jobb, notebooks och Unity Catalog-objekt, och du anropar dem med din workspace-URL som värd. Konto-API:er hanterar kontoövergripande resurser, såsom användar- och gruppprovisionering, skapande av arbetsytor, nätverks- och faktureringskonfiguration samt kontonivå-inställningar i Unity-katalogen, och du anropar dem med din kontokonsols inloggnings-URL och konto-ID.
För de operationer som finns tillgängliga i varje uppsättning, se arbetsytans API-referens och kontots API-referens.
Anropa ett REST-API
Ett Databricks REST API-anrop inkluderar följande komponenter:
- Beroende på om det är en arbetsyta eller kontoterminal, antingen:
- Din Databricks-arbetsområdes-URL
- Din inloggnings-URL och konto-ID för Databricks-kontokonsolen
- REST API-operationstypen, såsom
GET, , ,PATCH, ellerDELETEPOST. - REST API:s operationsvägar, såsom
/api/2.0/clusters/get. - Databricks-autentiseringsinformation , såsom en Databricks OAuth-token.
- Alla nyttolaster i begäran eller frågeparametrar i begäran som stöds av REST API-åtgärden, till exempel ID för ett kluster.
För information om hur man strukturerar en REST API-förfrågan och hur man tolkar responspayloads för ditt föredragna utvecklarverktyg, se din leverantörs dokumentation.
Exempel 1: Hämta kluster
Följande exempel anropar Cluster, List-endpointen för att returnera en lista över tillgängliga kluster. Den antar att miljövariabeln DATABRICKS_HOST är inställd på din Databricks-workspace-URL och DATABRICKS_TOKEN är satt på en Databricks-token.
curl -X GET "$DATABRICKS_HOST/api/2.0/clusters/list" \
-H "Authorization: Bearer $DATABRICKS_TOKEN"
import requests
import os
headers = {"Authorization": f"Bearer {os.getenv('DATABRICKS_TOKEN')}"}
response = requests.get(f"{os.getenv('DATABRICKS_HOST')}/api/2.0/clusters/list", headers=headers)
print(response.json())
Exempel 2: Kör ett jobb
Följande exempel anropar Job, Run Now-endpointen för att trigga en torrkörning av ett befintligt jobb. Den antar att miljövariabeln DATABRICKS_HOST är inställd på din Databricks-workspace-URL och DATABRICKS_TOKEN är satt på en Databricks-token.
curl -X POST "$DATABRICKS_HOST/api/2.1/jobs/run-now" \
-H "Authorization: Bearer $DATABRICKS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"job_id": 45678,
"notebook_params": {
"dry_run": "true",
"start_date": "2026-08-27"
}
}'
import requests
import os
url = f"{os.getenv('DATABRICKS_HOST')}/api/2.1/jobs/run-now"
headers = {
"Authorization": f"Bearer {os.getenv('DATABRICKS_TOKEN')}",
"Content-Type": "application/json"
}
payload = {
"job_id": 45678,
"notebook_params": {"dry_run": "true", "start_date": "2026-08-27"}
}
response = requests.post(url, headers=headers, json=payload)
print(f"Run ID: {response.json().get('run_id')}")
Exempel 3: Användare med återvändande konto
Följande exempel anropar Account User, List endpoint för att hämta användare i Databricks-kontot som identifieras av <account_id>:
curl -X GET '<databricks-account-login-url>/api/2.0/identity/accounts/<account_id>/users' \
--header "Authorization: Bearer $OAUTH_TOKEN"
import requests
import os
url = "<databricks-account-login-url>/api/2.0/identity/accounts/<account_id>/users"
headers = {"Authorization": f"Bearer {os.getenv('OAUTH_TOKEN')}"}
response = requests.get(url, headers=headers)
print(response.json())
Metodtips
Följande avsnitt beskriver några bästa prestandapraxis i takt med att datan i din arbetsplats växer.
Paginate LIST API-svar
LIST API:er returnerar resultat i sidor istället för ett enda stort svar. För att hämta en komplett resultatuppsättning, begär den första sidan och använd sedan token i svaret för att begära varje efterföljande sida tills ingen token returneras.
För att bläddra igenom en komplett resultatuppsättning:
- Skriv
max_results=0in din begäran. Detta låter servern välja en lämplig sidstorlek, vilket är mer effektivt än att begära ett fast antal resultat per sida. - Läs
next_page_tokenfältet från varje svar. För att begära nästa sida, skicka dess värde i frågeparameternpage_tokenför din nästa förfrågan. - Upprepa tills ett svar utelämnar
next_page_tokeneller returnerar det som ett tomt värde. Det svaret är sista sidan. - Inkludera
page_tokeninte i den första förfrågan. Lägg till det endast för uppföljningsförfrågningar.
Följande exempel använder detta mönster för att hämta varje tabell i ett schema från Unity Catalog Table, List-endpointen. Samma loop fungerar för alla LIST API:er. Endast ändpunkten och namnet på arrayfältet i svaret ändras. Till exempel returnerar endpointen Grants resultat i en privilege_assignments-array i stället för tables.
import requests
base_url = "https://example.cloud.databricks.com" # No trailing slash
bearer_token = "<your-personal-access-token>"
catalog_name = "main"
schema_name = "default"
def list_tables(base_url, bearer_token, catalog_name, schema_name):
endpoint = f"{base_url}/api/2.1/unity-catalog/tables"
headers = {"Authorization": f"Bearer {bearer_token}"}
params = {
"catalog_name": catalog_name,
"schema_name": schema_name,
"max_results": 0, # Let the server choose the page size.
}
tables = []
while True:
response = requests.get(endpoint, headers=headers, params=params)
response.raise_for_status()
body = response.json()
tables.extend(body.get("tables", []))
# Stop when the response no longer includes a page token.
page_token = body.get("next_page_token")
if not page_token:
break
params["page_token"] = page_token
return tables
Hantera 429-svar om frekvensbegränsning
Databricks upprätthåller hastighetsbegränsningar på REST API-anrop för att hålla arbetsytorna responsiva under tung belastning. Begränsningar tillämpas per slutpunkt och per arbetsyta för att stödja rättvis användning och tillgänglighet. En begäran som överskrider hastighetsgränsen returnerar ett HTTP-svar 429 Too Many Requests .
Hantera 429-svar smidigt genom att försöka igen med exponentiellt ökande väntetid och jitter:
-
Exponentiell tillbakagång: Efter en
429, vänta innan du försöker igen, och dubbla väntetiden efter varje efterföljande429. Sätt en maximal väntetid och ett maxantal försök så att en begäran inte försöker igen på obestämd tid. - Jitter: Lägg till en liten slumpmässig tid på varje väntan. Jitter fördelar omförsök över tid från flera klienter så att de inte alla gör nya försök samtidigt och orsakar återkommande trafiktoppar.
- Om ett svar innehåller en
Retry-Afterrubrik, vänta minst så länge innan du försöker igen.
De flesta HTTP-klientbibliotek kan tillämpa detta återförsöksbeteende åt dig. För bakgrund om algoritmen, se Exponential backoff and jitter.
För de hastighetsgränser som gäller för specifika API:er, se API-hastighetsgränser i API-hastighetsgränser.
Begränsa svarsfält för bättre prestanda
Vissa LIST API:er returnerar fält som är dyra att beräkna eller som gör svaren stora. När du inte behöver dessa fält, använd de begäranarparametrar som utelämnar dem för att minska svarsstorleken och förbättra latensen.
Till exempel stöder Unity Catalog Tables API följande parametrar:
-
omit_properties=true: Utelämnarpropertiesfältet från varje tabell i svaret. -
omit_columns=true: Utelämnarcolumnsfältet från varje tabell i svaret.
Om du listar tabeller bara för att hämta deras namn, ger inställningen av båda parametrarna ett mindre svar och listar tabeller snabbare. Kontrollera REST API-referensen för de fälttrimmningsparametrar som varje slutpunkt stödjer.