Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Importante
Questa funzionalità è in versione beta. Per abilitare questa anteprima di funzionalità nello spazio di lavoro, opta per l'impostazione Sandbox Databricks nella pagina Anteprime dello spazio di lavoro. Vedere Gestire le anteprime di Azure Databricks.
Databricks attualmente non addebita l'utilizzo di questa funzione. Tuttavia, costi e prezzi delle funzionalità in Beta sono soggetti a variazioni.
L'SDK Databricks per Python include un client sandbox per creare sandbox, eseguire comandi in essi e gestire il loro ciclo di vita. Questa pagina spiega queste operazioni. Per una panoramica di Databricks Sandbox, vedi Databricks Sandbox.
Installare l'SDK
Installa o aggiorna l'SDK Databricks per Python, che include il client sandbox:
pip install --upgrade databricks-sdk
Crea un WorkspaceClient
Tutte le operazioni sandbox vengono eseguite attraverso un WorkspaceClient. Crea un WorkspaceClient utilizzando le credenziali recuperate dall'ambiente, da un profilo di configurazione o da un host e un token espliciti:
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...")
Per ulteriori informazioni sulla configurazione e autenticazione dell'SDK, consulta Databricks SDK per Python.
Crea un sandbox
Crea una sandbox tramite ID. Puoi opzionalmente configurare la specifica di calcolo, come il timeout di inattività che controlla quanto a lungo il sandbox rimane attivo senza attività:
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"
Ottieni e elenca sandbox
Recupera un singolo sandbox per nome, oppure elenca tutti i sandbox:
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)
Esegui un comando in un ambiente sandbox
Esegui un comando in un sandbox e leggi il suo output. Il primo argomento è il nome sandbox, seguito dal programma da eseguire e dai suoi argomenti. Questo è un exec diretto senza shell, quindi, per eseguire un comando della shell, richiama /bin/bash -c. Fai passare qualsiasi variabile ambientale attraverso 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
Aggiorna i metadati sandbox
Puoi aggiornare il nome visualizzato e il timeout di inattività di una sandbox. Sono accettati solo i seguenti percorsi di campo. Qualsiasi altro percorso restituisce 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"]),
)
Fermati e riavvia un sandbox
Arresta un sandbox per liberare le relative risorse di calcolo mantenendo la tua directory home:
w.sandbox.stop_sandbox("sandboxes/my-sandbox") # Moves to SANDBOX_STATE_STOPPED
Riavvia la sandbox per riprendere il lavoro:
w.sandbox.start_sandbox("sandboxes/my-sandbox") # Moves to SANDBOX_STATE_RUNNING
Eliminazione di un sandbox
Elimina un sandbox quando hai finito. L'eliminazione di un sandbox rimuove la sua directory home e interrompe la fatturazione del sandbox:
w.sandbox.delete_sandbox("sandboxes/my-sandbox")