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.
Important
Fitur ini ada di Beta. Untuk mengaktifkan pratinjau fitur ini di ruang kerja, pilih ke pengaturan Databricks Sandbox di halaman Pratinjau ruang kerja. Lihat Kelola Pratinjau Azure Databricks.
Databricks saat ini tidak mengenakan biaya untuk penggunaan fitur ini. Namun, biaya dan harga untuk fitur Beta dapat berubah.
Databricks SDK untuk Python mencakup klien sandbox untuk membuat sandbox, menjalankan perintah di dalamnya, dan mengelola siklus hidupnya. Halaman ini membahas operasi-operasi tersebut. Untuk gambaran umum Databricks Sandbox, lihat Databricks Sandbox.
Pasang SDK
Instal atau tingkatkan Databricks SDK untuk Python, yang mencakup klien sandbox:
pip install --upgrade databricks-sdk
Buat WorkspaceClient
Semua operasi sandbox dijalankan melalui sebuah WorkspaceClient. Buat WorkspaceClient menggunakan kredensial yang diambil dari lingkungan Anda, profil konfigurasi, atau host dan token yang ditentukan secara eksplisit:
from databricks.sdk import WorkspaceClient
# Resolve credentials from the environment or the default config profile:
w = WorkspaceClient()
# Or select a specific ~/.databrickscfg profile:
w = WorkspaceClient(profile="my-workspace")
# Or pass the host and token explicitly:
w = WorkspaceClient(host="https://<workspace>.cloud.databricks.com", token="dapi...")
Untuk informasi lebih lanjut tentang mengonfigurasi dan mengautentikasi SDK, lihat Databricks SDK untuk Python.
Buat sandbox
Buat sandbox berdasarkan ID. Anda dapat mengonfigurasi spesifikasi komputasi secara opsional, seperti timeout ketidakaktifan yang mengontrol berapa lama sandbox tetap berjalan tanpa aktivitas:
from google.protobuf.duration_pb2 import Duration
from databricks.sdk.service.sandbox import ComputeSpec, Sandbox, SandboxSpec
created = w.sandbox.create_sandbox(
sandbox=Sandbox(
spec=SandboxSpec(compute=ComputeSpec(inactivity_timeout=Duration(seconds=900))),
),
sandbox_id="my-sandbox",
)
print(created.name) # "sandboxes/my-sandbox"
Dapatkan dan tampilkan daftar sandbox
Ambil satu sandbox berdasarkan nama, atau daftarkan semua sandbox:
sandbox = w.sandbox.get_sandbox("sandboxes/my-sandbox")
print(sandbox.status.state) # SandboxState.SANDBOX_STATE_RUNNING
for sandbox in w.sandbox.list_sandboxes():
print(sandbox.name, sandbox.status.state if sandbox.status else None)
Jalankan perintah di sandbox
Jalankan perintah di sandbox dan baca outputnya. Argumen pertama adalah nama sandbox, diikuti oleh program yang akan dijalankan dan argumennya. Ini adalah eksekusi langsung tanpa shell, jadi untuk menjalankan perintah shell, jalankan /bin/bash -c. Lewatkan variabel lingkungan apa pun melalui envs:
from google.protobuf.duration_pb2 import Duration
resp = w.sandbox.execute_command_sync(
"sandboxes/my-sandbox",
"/bin/bash",
args=["-c", "echo hello world && whoami"],
envs={"MY_VAR": "value"},
execution_timeout=Duration(seconds=30),
)
print(resp.status) # ExecuteCommandStatus.EXECUTE_COMMAND_STATUS_COMPLETED
print(resp.exit_code) # 0
print(resp.stdout) # "hello world\nsandbox-agent\n"
print(resp.stderr)
print(resp.truncated) # True if the output was truncated
Perbarui metadata sandbox
Anda dapat mengubah nama tampilan dan batas waktu tidak aktif sandbox. Hanya path kolom berikut yang diterima. Jalur lain mengembalikan INVALID_PARAMETER_VALUE:
display_namespec.compute.inactivity_timeout
from databricks.sdk.common.types.fieldmask import FieldMask
from databricks.sdk.service.sandbox import ComputeSpec, Sandbox, SandboxSpec
from google.protobuf.duration_pb2 import Duration
# Rename the sandbox
w.sandbox.update_sandbox(
name="sandboxes/my-sandbox",
sandbox=Sandbox(display_name="renamed sandbox"),
update_mask=FieldMask(["display_name"]),
)
# Extend the inactivity timeout
w.sandbox.update_sandbox(
name="sandboxes/my-sandbox",
sandbox=Sandbox(spec=SandboxSpec(compute=ComputeSpec(inactivity_timeout=Duration(seconds=1800)))),
update_mask=FieldMask(["spec.compute.inactivity_timeout"]),
)
Hentikan dan mulai ulang sandbox
Hentikan sandbox untuk melepaskan komputasinya sambil mempertahankan direktori utama Anda:
w.sandbox.stop_sandbox("sandboxes/my-sandbox") # Moves to SANDBOX_STATE_STOPPED
Mulai ulang sandbox untuk melanjutkan pekerjaan:
w.sandbox.start_sandbox("sandboxes/my-sandbox") # Moves to SANDBOX_STATE_RUNNING
Hapus sandbox
Hapus sandbox setelah selesai. Menghapus sandbox akan menghapus direktori berandanya dan menghentikan penagihan untuk sandbox tersebut:
w.sandbox.delete_sandbox("sandboxes/my-sandbox")