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.
Important
Den här funktionen finns i Beta. För att aktivera denna funktionsförhandsvisning i arbetsytan, välj in Databricks Sandbox-inställningen på sidan för arbetsytans förhandsvisningar. Se Hantera förhandsversioner av Azure Databricks.
Databricks tar för närvarande inte betalt för användning av denna funktion. Kostnad och pris för funktioner i Beta kan dock ändras.
Databricks SDK för Python inkluderar en sandlådeklient för att skapa sandlådor, köra kommandon i dem och hantera deras livscykel. Den här sidan går igenom dessa operationer. För en översikt av Databricks Sandbox, se Databricks Sandbox.
Installera SDK:n
Installera eller uppgradera Databricks SDK för Python, som inkluderar sandlådeklienten:
pip install --upgrade databricks-sdk
Skapa en WorkspaceClient
Alla operationer i sandlådan sker via en WorkspaceClient. Skapa en WorkspaceClient med inloggningsuppgifter som hämtats från din miljö, en konfigurationsprofil eller en uttryckligen angiven värd och token:
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...")
För mer information om att konfigurera och autentisera SDK:n, se Databricks SDK för Python.
Skapa en sandlåda
Skapa en sandlåda efter ID. Du kan valfritt konfigurera beräkningsspecifikationen, till exempel inaktivitetstidsgränsen som styr hur länge sandlådan är igång utan aktivitet:
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"
Hämta och lista sandlådor
Hämta en enda sandlåda efter namn, eller lista alla sandlådor:
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)
Kör ett kommando i en sandlåda
Kör ett kommando i en sandlåda och läs dess utdata. Det första argumentet är sandlådenamnet, följt av programmet som ska köras och dess argument. Detta är en direkt exec utan shell, så för att köra ett shell-kommando, anropa /bin/bash -c. Skicka alla miljövariabler genom 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
Uppdatera sandlådemetadata
Du kan uppdatera visningsnamnet för en sandlåda och tidsgränsen för inaktivitet. Endast följande fältvägar accepteras. Alla andra sökvägar returnerar 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"]),
)
Stoppa och starta om en sandlåda
Stoppa en sandlåda för att frigöra dess beräkningsresurser samtidigt som du bevarar din hemkatalog:
w.sandbox.stop_sandbox("sandboxes/my-sandbox") # Moves to SANDBOX_STATE_STOPPED
Starta sandlådan igen för att återuppta arbetet:
w.sandbox.start_sandbox("sandboxes/my-sandbox") # Moves to SANDBOX_STATE_RUNNING
Ta bort en sandlåda
Radera en sandlåda när du är klar. Om du tar bort en sandlåda tas dess hemkatalog bort och faktureringen för sandlådan stoppas:
w.sandbox.delete_sandbox("sandboxes/my-sandbox")