Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Importante
Este recurso está em versão Beta. Para ativar esta pré-visualização de funcionalidades no espaço de trabalho, opte pela definição Databricks Sandbox na página de Pré-visualizações do espaço de trabalho. Ver Gerir as pré-visualizações de Azure Databricks.
Atualmente, a Databricks não cobra pela utilização desta funcionalidade. No entanto, o custo e o preço das funcionalidades em Beta estão sujeitos a alterações.
O SDK Databricks para Python inclui um cliente sandbox para criar sandboxes, executar comandos neles e gerir o seu ciclo de vida. Esta página percorre essas operações. Para uma visão geral do Databricks Sandbox, veja Databricks Sandbox.
Instalar o SDK
Instale ou atualize o SDK Databricks para Python, que inclui o cliente sandbox:
pip install --upgrade databricks-sdk
Criar um Cliente de Espaço de Trabalho
Todas as operações na sandbox passam por um WorkspaceClient. Crie um WorkspaceClient usando credenciais resolvidas pelo seu ambiente, um perfil de configuração ou um host e token explícitos:
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...")
Para mais informações sobre como configurar e autenticar o SDK, consulte Databricks SDK para Python.
Criar uma sandbox
Cria um sandbox por ID. Pode, opcionalmente, configurar a especificação de processamento, como o tempo limite de inatividade que controla durante quanto tempo o ambiente isolado permanece em execução sem atividade:
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"
Obter e listar ambientes de teste
Recupere um único sandbox pelo nome, ou liste todos os 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)
Executa um comando num sandbox
Executa um comando num sandbox e lê a sua saída. O primeiro argumento é o nome sandbox, seguido do programa a executar e dos seus argumentos. Este é um exec direto sem shell, por isso, para executar um comando de shell, invoque /bin/bash -c. Passe quaisquer variáveis de ambiente por 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
Atualizar metadados da sandbox
Pode atualizar o nome de exibição e o tempo limite de inatividade de uma sandbox. Apenas os seguintes caminhos de campo são aceites. Qualquer outro caminho retorna 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"]),
)
Parar e reiniciar um sandbox
Interrompa uma sandbox para libertar os seus recursos de computação, preservando o seu diretório pessoal:
w.sandbox.stop_sandbox("sandboxes/my-sandbox") # Moves to SANDBOX_STATE_STOPPED
Reinicie o sandbox para retomar o trabalho:
w.sandbox.start_sandbox("sandboxes/my-sandbox") # Moves to SANDBOX_STATE_RUNNING
Eliminar um sandbox
Apaga um sandbox quando terminares. Eliminar um sandbox remove o seu diretório principal e deixa de faturar o sandbox:
w.sandbox.delete_sandbox("sandboxes/my-sandbox")