Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Important
Tato funkce je v beta verzi. Chcete-li v pracovním prostoru povolit náhled této funkce, povolte na stránce Náhledy v pracovním prostoru nastavení Databricks Sandbox. Viz Manage Azure Databricks preview.
Databricks v současnosti neúčtuje za používání této funkce. Cena a ceny funkcí v betě se však mohou změnit.
Databricks SDK pro Python obsahuje sandboxového klienta pro vytváření sandboxů, spouštění příkazů v nich a správu jejich životního cyklu. Tato stránka prochází těmito operacemi. Přehled o Databricks Sandbox naleznete v článku Databricks Sandbox.
Nainstalujte SDK
Nainstalujte nebo upgradujte Databricks SDK pro Python, který zahrnuje sandboxového klienta:
pip install --upgrade databricks-sdk
Vytvořit WorkspaceClient
Všechny operace v sandboxu probíhají přes WorkspaceClient. Vytvořte WorkspaceClient pomocí přihlašovacích údajů získaných z vašeho prostředí, konfiguračního profilu nebo explicitně zadaného hostitele a tokenu:
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...")
Pro více informací o konfiguraci a autentizaci SDK viz Databricks SDK pro Python.
Vytvořte sandbox
Vytvořte sandbox podle ID. Můžete si volitelně nastavit výpočetní specifikaci, například časovou hranici nečinnosti, která určuje, jak dlouho sandbox běží bez aktivity:
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"
Získání a výpis sandboxů
Získejte jeden sandbox podle jména, nebo vypsněte všechny sandboxy:
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)
Spusť příkaz v sandboxu
Spusť příkaz v sandboxu a přečti jeho výstup. Prvním argumentem je název sandboxu, následovaný programem pro spuštění a jeho argumenty. Jedná se o přímý exec bez shellu, takže pro spuštění shellového příkazu vyvoláme /bin/bash -c. Předejte libovolné proměnné prostředí přes 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
Aktualizujte metadata sandboxu
Můžete aktualizovat zobrazovací název sandboxu a časovou hranici nečinnosti. Přijímány jsou pouze následující terénní cesty. Jakákoli jiná cesta vrací 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"]),
)
Zastavte a znovu spusťte sandbox
Zastavte sandbox, abyste uvolnili jeho výpočetní kapacitu a zároveň zachovali svůj domovský adresář:
w.sandbox.stop_sandbox("sandboxes/my-sandbox") # Moves to SANDBOX_STATE_STOPPED
Znovu spusťte sandbox a pokračujte v práci:
w.sandbox.start_sandbox("sandboxes/my-sandbox") # Moves to SANDBOX_STATE_RUNNING
Smažte sandbox
Až skončíte, smažte sandbox. Smazání sandboxu odstraní jeho domovský adresář a zastaví účtování za sandbox:
w.sandbox.delete_sandbox("sandboxes/my-sandbox")