Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Important
Cette fonctionnalité est en version bêta. Pour activer cette aperçu de fonctionnalité dans l’espace de travail, optez pour le paramètre Sandbox Databricks dans la page Aperçu de l’espace de travail. Consultez Gérer les préversions d’Azure Databricks.
Databricks ne facture actuellement pas l’utilisation de cette fonctionnalité. Cependant, le coût et les prix des fonctionnalités en version Bêta peuvent évoluer.
Le SDK Databricks pour Python inclut un client bac à sable pour créer des bacs à sable, exécuter des commandes dans ceux-ci et gérer leur cycle de vie. Cette page présente ces opérations. Pour un aperçu du bac à sable Databricks, voir le bac à sable Databricks.
Installer le Kit de développement logiciel (SDK)
Installez ou mettez à jour le SDK Databricks pour Python, qui inclut le client bac à sable :
pip install --upgrade databricks-sdk
Créer un client WorkspaceClient
Toutes les opérations du sandbox s’exécutent via un WorkspaceClient. Créez un WorkspaceClient à l’aide d’identifiants obtenus à partir de votre environnement, d’un profil de configuration ou d’un hôte et d’un jeton explicitement fournis :
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...")
Pour plus d’informations sur la configuration et l’authentification du SDK, voir Databricks SDK pour Python.
Créez un bac à sable
Créez un sandbox à partir de son ID. Vous pouvez optionnellement configurer la spécification de calcul, comme le délai d’inactivité qui contrôle combien de temps le bac à sable reste en fonctionnement sans activité :
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"
Obtenir et répertorier les environnements de test
Récupérez un bac à sable unique par nom, ou listez tous les bacs à sable :
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)
Exécutez une commande dans un bac à sable
Exécutez une commande dans un bac à sable et lisez sa sortie. Le premier argument est le nom du bac à sable, suivi du programme à exécuter et de ses arguments. C’est un exécutif direct sans shell, donc pour exécuter une commande shell, invoke /bin/bash -c. Faites passer toutes les variables d’environnement à travers 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
Mettre à jour les métadonnées du bac à sable
Vous pouvez mettre à jour le nom affiché et le délai d’inactivité d’un bac à sable. Seuls les chemins de terrain suivants sont acceptés. Tout autre chemin renvoie 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"]),
)
Arrêtez et redémarrez un bac à sable
Arrêtez un bac à sable pour libérer son calcul tout en préservant votre répertoire personnel :
w.sandbox.stop_sandbox("sandboxes/my-sandbox") # Moves to SANDBOX_STATE_STOPPED
Relancez le bac à sable pour reprendre le travail :
w.sandbox.start_sandbox("sandboxes/my-sandbox") # Moves to SANDBOX_STATE_RUNNING
Supprimer un bac à sable
Supprime un bac à sable quand tu as fini. Supprimer un bac à sable supprime son répertoire personnel et arrête la facturation pour le bac à sable :
w.sandbox.delete_sandbox("sandboxes/my-sandbox")