Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Halaman ini menjelaskan Azure Databricks REST API, cara memanggilnya, dan beberapa praktik terbaik.
Untuk referensi lengkap untuk Databricks REST API, lihat referensi Databricks REST API.
Nota
Kecuali untuk skenario lanjutan, Databricks merekomendasikan penggunaan Databricks SDK atau Databricks CLI daripada Databricks REST API untuk mengelola objek Databricks secara programatik.
REST API Workspace vs Akun
Azure Databricks menyediakan dua set API REST. API Workspace mengelola sumber daya di dalam satu workspace, seperti cluster, job, notebook, dan objek Unity Catalog, dan Anda memanggilnya menggunakan URL workspace Anda sebagai host. API akun mengelola sumber daya seluruh akun, seperti penyediaan pengguna dan grup, pembuatan workspace, konfigurasi jaringan dan penagihan, serta pengaturan Unity Catalog tingkat akun, dan Anda memanggilnya menggunakan URL login konsol akun dan ID akun Anda.
Untuk operasi yang tersedia di setiap set, lihat referensi API workspace dan referensi API akun.
Memanggil API REST
Panggilan API REST Databricks mencakup komponen berikut:
- Bergantung pada apakah endpoint tersebut merupakan endpoint workspace atau endpoint akun, pilih salah satu berikut:
- URL workspace Databricks Anda
- URL login konsol akun Databricks dan ID akun Anda
- Jenis operasi API REST, seperti
GET,POST,PATCH, atauDELETE. - Jalur operasi API REST, seperti
/api/2.0/clusters/get. - Informasi autentikasi Databricks, seperti token OAuth Databricks.
- Setiap muatan permintaan atau parameter kueri permintaan yang didukung oleh operasi API REST, seperti ID klaster.
Untuk informasi tentang cara menyusun permintaan REST API dan cara mengurai payload respons untuk alat pengembang pilihan Anda, lihat dokumentasi penyedia Anda.
Contoh 1: Dapatkan klaster
Contoh berikut memanggil endpoint Cluster, List untuk mengembalikan daftar cluster yang tersedia. Ini mengasumsikan bahwa variabel lingkungan DATABRICKS_HOST ditetapkan ke URL ruang kerja Databricks Anda dan DATABRICKS_TOKEN ditetapkan ke token Databricks.
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())
Contoh 2: Jalankan pekerjaan
Contoh berikut memanggil endpoint Job, Run Now untuk memicu dry run dari pekerjaan yang sudah ada. Ini mengasumsikan bahwa variabel lingkungan DATABRICKS_HOST disetel ke URL ruang kerja Databricks Anda dan DATABRICKS_TOKEN disetel ke token Databricks.
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')}")
Contoh 3: Pengguna akun yang kembali
Contoh berikut memanggil endpoint Daftar Pengguna Akun untuk mengembalikan pengguna di akun Databricks yang diidentifikasi oleh <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())
Praktik terbaik
Bagian berikut menjelaskan beberapa praktik terbaik kinerja seiring data di workspace Anda bertambah.
Paginasikan respons API LIST
LIST API mengembalikan hasil dalam bentuk halaman, bukan satu respons besar. Untuk mengambil hasil lengkap, minta halaman pertama, lalu gunakan token dalam respons untuk meminta setiap halaman berikutnya hingga tidak ada token yang dikembalikan.
Untuk menelusuri set hasil lengkap:
- Tetapkan
max_results=0dalam permintaan Anda. Ini memungkinkan server memilih ukuran halaman yang sesuai, yang lebih efisien daripada meminta jumlah hasil tetap per halaman. - Baca
next_page_tokenkolom dari setiap respons. Untuk meminta halaman berikutnya, sertakan nilainya dalam parameter kueripage_tokenpada permintaan berikutnya. - Ulangi hingga respons tidak menyertakan
next_page_tokenatau mengembalikannya dengan nilai kosong. Jawaban itu adalah halaman terakhir. - Jangan masukkan
page_tokendalam permintaan pertama. Tambahkan hanya untuk permintaan tindak lanjut.
Contoh berikut menggunakan pola ini untuk mengambil setiap tabel dalam sebuah skema dari endpoint Unity Catalog Table, List. Loop yang sama berlaku untuk API apa pun LIST . Hanya endpoint dan nama field array pada respons yang berubah. Misalnya, endpoint Grants mengembalikan hasil dalam array privilege_assignments alih-alih 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
Tangani 429 respons dengan batas laju
Databricks memberlakukan batas laju pada panggilan REST API untuk menjaga workspace tetap responsif di bawah beban berat. Batasan diterapkan per endpoint dan per workspace untuk mendukung penggunaan yang adil dan ketersediaan. Permintaan yang melebihi batas laju akan mengembalikan respons HTTP 429 Too Many Requests .
Tangani respons 429 dengan baik dengan mencoba kembali menggunakan penundaan eksponensial dan jitter:
-
Exponential backoff: Setelah
429, tunggu sebelum mencoba ulang, dan gandakan waktu tunggu setelah setiap429. Atur waktu tunggu maksimum dan jumlah percobaan ulang maksimum agar permintaan tidak mencoba ulang tanpa batas waktu. - Jitter: Tambahkan sedikit waktu acak pada setiap penantian. Jitter mengatur agar percobaan ulang dari beberapa klien tersebar, sehingga tidak semuanya mencoba ulang pada saat yang sama dan menyebabkan lonjakan trafik yang berulang.
- Jika sebuah respons menyertakan
Retry-Afterheader, tunggu setidaknya selama itu sebelum mencoba lagi.
Sebagian besar pustaka klien HTTP dapat menerapkan perilaku percobaan ulang ini untuk Anda. Untuk informasi latar belakang tentang algoritma ini, lihat Backoff eksponensial dan jitter.
Untuk batas tarif yang berlaku untuk API tertentu, lihat batas tingkat API dalam batas laju API.
Potong bidang respons untuk performa
Beberapa LIST API mengembalikan kolom yang mahal secara komputasi atau yang memperbesar ukuran respons. Saat Anda tidak membutuhkan kolom-kolom ini, gunakan parameter permintaan yang menghilangkannya untuk mengurangi ukuran respons dan meningkatkan latensi.
Sebagai contoh, API Tabel Katalog Unity mendukung parameter berikut:
-
omit_properties=true: Menghilangkan kolompropertiesdari setiap tabel dalam respons. -
omit_columns=true: Menghilangkan kolomcolumnsdari setiap tabel pada respons.
Jika Anda mendaftar tabel hanya untuk mengambil nama tabel, menyetel kedua parameter tersebut akan menghasilkan respons yang lebih kecil dan membuat daftar tabel ditampilkan lebih cepat. Periksa referensi REST API untuk parameter pemangkasan kolom yang didukung oleh masing-masing endpoint.