Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Important
Deze functie bevindt zich in de bètaversie. Om de preview van deze functie in de werkruimte in te schakelen, meld je je aan voor de Databricks Sandbox-instelling op de pagina Previews van de werkruimte. Zie Azure Databricks previews beheren.
Databricks rekent momenteel geen kosten voor het gebruik van deze functie. Echter, kosten en prijzen voor functies in de bèta kunnen veranderen.
De Databricks SDK voor Python bevat een sandbox-client voor het maken van sandboxes, het uitvoeren van commando's daarin en het beheren van hun levenscyclus. Deze pagina belicht deze operaties. Voor een overzicht van Databricks Sandbox, zie Databricks Sandbox.
Installeer de SDK
Installeer of upgrade de Databricks SDK voor Python, die de sandbox-client bevat:
pip install --upgrade databricks-sdk
Maak een WorkspaceClient aan
Alle sandbox-operaties lopen via een WorkspaceClient. Maak een WorkspaceClient met inloggegevens die afkomstig zijn uit je omgeving, een configuratieprofiel of een expliciet opgegeven host en 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...")
Voor meer informatie over het configureren en authenticeren van de SDK, zie Databricks SDK voor Python.
Maak een sandbox
Maak een sandbox aan op ID. Je kunt optioneel de compute-specificatie configureren, zoals de inactiviteitstimeout die bepaalt hoe lang de sandbox zonder activiteit blijft draaien:
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"
Sandboxen ophalen en weergeven
Haal een enkele sandbox op naam op, of noem alle sandboxes:
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)
Voer een commando uit in een sandbox
Voer een commando uit in een sandbox en lees de output ervan. Het eerste argument is de naam van de sandbox, gevolgd door het programma dat moet draaien en de argumenten daarvan. Dit is een directe exec zonder shell, dus om een shell-commando uit te voeren, roep /bin/bash -c. Laat alle omgevingsvariabelen doorlopen: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
Sandbox-metadata bijwerken
Je kunt de weergavenaam en de timeout voor inactiviteit van een sandbox bijwerken. Alleen de volgende veldpaden worden geaccepteerd. Elk ander pad resulteert in 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"]),
)
Stop en start opnieuw een sandbox
Stop een sandbox om de rekenkracht vrij te geven met behoud van je thuismap:
w.sandbox.stop_sandbox("sandboxes/my-sandbox") # Moves to SANDBOX_STATE_STOPPED
Start de sandbox opnieuw om het werk te hervatten:
w.sandbox.start_sandbox("sandboxes/my-sandbox") # Moves to SANDBOX_STATE_RUNNING
Verwijder een sandbox
Verwijder een sandbox als je klaar bent. Het verwijderen van een sandbox verwijdert de thuismap en stopt de facturering voor de sandbox:
w.sandbox.delete_sandbox("sandboxes/my-sandbox")