Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Importante
Esse recurso está em Beta. Para habilitar essa pré-visualização no workspace, opte pela configuração Databricks Sandbox na página de Pré-visualizações do workspace. Consulte Gerenciar visualizações do Azure Databricks.
Atualmente, a Databricks não cobra pelo uso desse recurso. No entanto, o custo e o preço dos recursos no Beta podem ser alterados.
O SDK Databricks para Python inclui um cliente sandbox para criar sandboxes, executar comandos neles e gerenciar seu ciclo de vida. Esta página explica 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 obtidas do seu ambiente, de um perfil de configuração ou de um host e um 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, veja o Databricks SDK para Python.
Crie uma sandbox
Crie um sandbox por ID. Você pode, opcionalmente, configurar a especificação de computação, como o tempo limite de inatividade que controla por quanto tempo o sandbox 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 as áreas restritas
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)
Execute um comando em um sandbox
Execute um comando em um sandbox e leia sua saída. O primeiro argumento é o nome sandbox, seguido pelo programa a ser executado e seus argumentos. Este é um exec direto sem shell, então para executar um comando 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
Você pode atualizar o nome de exibição e o tempo de inatividade de um sandbox. Somente os seguintes caminhos de campo são aceitos. 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"]),
)
Pare e reinicie um sandbox
Interrompa um sandbox para liberar seus recursos computacionais enquanto preserva seu diretório home:
w.sandbox.stop_sandbox("sandboxes/my-sandbox") # Moves to SANDBOX_STATE_STOPPED
Inicie o sandbox novamente para retomar o trabalho:
w.sandbox.start_sandbox("sandboxes/my-sandbox") # Moves to SANDBOX_STATE_RUNNING
Excluir uma sandbox
Exclua um sandbox quando terminar. Deletar um sandbox remove seu diretório inicial e para de cobrar o sandbox:
w.sandbox.delete_sandbox("sandboxes/my-sandbox")