Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Important
Dieses Feature befindet sich in der Betaversion. Um diese Funktionsvorschau im Arbeitsbereich zu aktivieren, wähle die Databricks-Sandbox-Einstellung auf der Seite Vorschauen des Arbeitsbereichs an. Siehe Manage Azure Databricks Previews.
Databricks erhebt derzeit keine Gebühren für die Nutzung dieser Funktion. Allerdings können sich Kosten und Preise für Funktionen in der Beta ändern.
Das Databricks SDK für Python enthält einen Sandbox-Client zum Erstellen von Sandboxen, zum Ausführen von Befehlen darin und zur Verwaltung ihres Lebenszyklus. Diese Seite führt diese Operationen durch. Für einen Überblick über Databricks Sandbox siehe Databricks Sandbox.
Das SDK installieren
Installieren oder aktualisieren Sie das Databricks SDK für Python, das den Sandbox-Client enthält:
pip install --upgrade databricks-sdk
Erstellen Sie einen WorkspaceClient
Alle Vorgänge in der Sandbox werden über ein WorkspaceClient ausgeführt. Erstelle eine WorkspaceClient mit Anmeldeinformationen, die aus deiner Umgebung, einem Konfigurationsprofil oder einem explizit angegebenen Host und Token ermittelt werden:
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...")
Weitere Informationen zur Konfiguration und Authentifizierung des SDK finden Sie unter Databricks SDK für Python.
Erstelle eine Sandbox
Erstellen Sie eine Sandbox anhand der ID. Du kannst optional die Compute-Spezifikation konfigurieren, zum Beispiel die Inaktivitätszeit, die steuert, wie lange die Sandbox ohne Aktivität läuft:
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"
Sandboxes abrufen und auflisten
Holen Sie einen einzelnen Sandkasten nach Namen ab oder listen Sie alle Sandboxen auf:
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)
Führe einen Befehl in einer Sandbox aus
Führe einen Befehl in einer Sandbox aus und lies dessen Ausgabe. Das erste Argument ist der Name der Sandbox, gefolgt vom zu ausführenden Programm und seinen Argumenten. Dies ist eine direkte Ausführung ohne Shell. Um einen Shell-Befehl auszuführen, verwenden Sie /bin/bash -c. Führen Sie beliebige Umweltvariablen durch 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
Aktualisieren Sie Sandbox-Metadaten
Du kannst den Anzeigenamen und das Inaktivitäts-Timeout einer Sandbox aktualisieren. Es werden nur die folgenden Feldpfade akzeptiert. Jeder andere Pfad liefert 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"]),
)
Stoppe und starte einen Sandkasten neu
Stoppen Sie eine Sandbox, um ihre Rechenkapazität freizugeben, wobei Ihr Home-Verzeichnis erhalten bleibt:
w.sandbox.stop_sandbox("sandboxes/my-sandbox") # Moves to SANDBOX_STATE_STOPPED
Starte den Sandkasten erneut, um die Arbeit fortzusetzen:
w.sandbox.start_sandbox("sandboxes/my-sandbox") # Moves to SANDBOX_STATE_RUNNING
Eine Sandbox löschen
Lösche eine Sandbox, wenn du fertig bist. Beim Löschen einer Sandbox wird ihr Home-Verzeichnis entfernt und die Abrechnung für die Sandbox beendet:
w.sandbox.delete_sandbox("sandboxes/my-sandbox")