Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Important
Ez a funkció bétaverzióban érhető el. A funkció előnézetének engedélyezéséhez a munkaterületen belépj a Databricks Sandbox beállításába a munkaterület előnézetek oldalán. Lásd: Az Azure Databricks előzetes verziójának kezelése.
A Databricks jelenleg nem számít díjat ennek a funkciónak a használatáért. Azonban a Béta funkciók ára és árazása változhat.
A Databricks SDK for Python egy sandbox klienst tartalmaz sandboxok létrehozására, parancsok futtatására és életciklusuk kezelésére. Ez az oldal végigvezeti ezeket a műveleteket. A Databricks Sandbox áttekintéséért lásd a Databricks Sandboxot.
Az SDK telepítése
Telepítse vagy frissítse a Databricks SDK-t Python számára, amely tartalmazza a sandbox klienst is:
pip install --upgrade databricks-sdk
Létrehozz egy WorkspaceClient
Minden homokozó-művelet egy WorkspaceClient keresztül történik. Hozzon létre egy WorkspaceClient elemet olyan hitelesítő adatokkal, amelyek a környezetből, egy konfigurációs profilból vagy egy explicit módon megadott gazdagépből és tokenből származnak:
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...")
További információért az SDK konfigurálásáról és hitelesítéséről lásd: Databricks SDK for Python.
Sandbox létrehozása
Hozz létre egy sandboxot azonosító alapján. Opcionálisan konfigurálhatod a számítási specifikációt, például az inaktivitás időkorlátját, amely szabályozza, meddig fut a homokdoboz aktivitás nélkül:
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"
Sandboxok lekérése és listázása
Egyetlen homokozót név szerint kérjen le, vagy sorold fel az összes homokozót:
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)
Futtatj parancsot egy sandboxban
Futtatj egy parancsot egy sandboxban, és olvasd el a kimenetét. Az első érv a sandbox neve, majd a futtatandó program és annak érvei. Ez közvetlen végrehajtás shell nélkül, ezért shellparancs futtatásához hívd meg a /bin/bash -c elemet. Add át az összes környezeti változót a következőn keresztül 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 metaadatok frissítése
Frissítheted a sandbox megjelenítési nevét és az inaktivitás időkorlátját. Csak a következő mezőútvonalak fogadhatók el. Bármely más elérési út a következőt adja vissza 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"]),
)
Állítsd meg és indítsd újra a sandboxot
Állítsd le a sandboxot, hogy felszabadítsd a számítási erőforrásait, miközben megőrzöd a saját könyvtáradat:
w.sandbox.stop_sandbox("sandboxes/my-sandbox") # Moves to SANDBOX_STATE_STOPPED
Újraindítsd a sandboxot, hogy folytasd a munkát:
w.sandbox.start_sandbox("sandboxes/my-sandbox") # Moves to SANDBOX_STATE_RUNNING
Törölj egy sandboxot
Törölj egy sandboxot, ha végeztél. Egy sandbox törlése eltávolítja a kezdőkönyvtárát, és megállítja a sandbox számlázását:
w.sandbox.delete_sandbox("sandboxes/my-sandbox")