Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ważna
Ta funkcja jest dostępna w wersji beta. Aby włączyć podgląd tej funkcji w obszarze roboczym, włącz ustawienie Databricks Sandbox na stronie Podglądy obszaru roboczego. Zobacz Zarządzanie wersjami zapoznawczami usługi Azure Databricks.
Databricks obecnie nie pobiera opłat za korzystanie z tej funkcji. Jednak koszty i ceny funkcji w wersji beta mogą ulec zmianie.
Databricks SDK dla Python zawiera klienta sandboxowego do tworzenia sandboxów, uruchamiania w nich poleceń oraz zarządzania ich cyklem życia. Ta strona przedstawia te operacje. Aby uzyskać przegląd Databricks Sandbox, zobacz Databricks Sandbox.
Zainstaluj zestaw SDK
Zainstaluj lub zaktualizuj SDK Databricks dla Python, który zawiera klienta sandbox:
pip install --upgrade databricks-sdk
Stwórz WorkspaceClient
Wszystkie operacje sandboxowe przebiegają przez .WorkspaceClient Utwórz WorkspaceClient, używając poświadczeń uzyskanych ze środowiska, profilu konfiguracji lub jawnie określonych hosta i 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...")
Więcej informacji o konfigurowaniu i uwierzytelnianiu SDK można znaleźć w Databricks SDK dla Python.
Stwórz piaskownicę
Utwórz sandbox na podstawie identyfikatora. Możesz opcjonalnie skonfigurować specyfikację zasobów obliczeniowych, na przykład limit czasu bezczynności, który określa, jak długo środowisko sandbox pozostaje uruchomione bez aktywności:
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"
Pobierz i wypisz piaskownice
Pobierz pojedyncze środowisko testowe według nazwy lub wyświetl listę wszystkich środowisk testowych:
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)
Uruchom polecenie w piaskownicy
Uruchom polecenie w środowisku izolowanym i odczytaj dane wyjściowe. Pierwszym argumentem jest nazwa sandbox, następnie program do uruchomienia i jego argumenty. Jest to bezpośrednie wywołanie bez użycia powłoki, więc aby uruchomić polecenie w powłoce, wywołaj /bin/bash -c. Przepuszcz dowolne zmienne środowiskowe przez 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
Zaktualizuj metadane sandboxowe
Możesz zaktualizować nazwę wyświetlania sandboxu oraz limit czasu nieaktywności. Akceptowane są tylko następujące ścieżki terenowe. Każda inna ścieżka zwraca: 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"]),
)
Zatrzymaj i uruchom ponownie piaskownicę
Zatrzymaj środowisko sandbox, aby zwolnić jego zasoby obliczeniowe, zachowując katalog domowy:
w.sandbox.stop_sandbox("sandboxes/my-sandbox") # Moves to SANDBOX_STATE_STOPPED
Uruchom ponownie środowisko testowe, aby wznowić pracę:
w.sandbox.start_sandbox("sandboxes/my-sandbox") # Moves to SANDBOX_STATE_RUNNING
Usuń piaskownicę
Usuń piaskownicę, gdy skończysz. Usunięcie środowiska testowego powoduje usunięcie jego katalogu domowego i wstrzymanie naliczania opłat za to środowisko:
w.sandbox.delete_sandbox("sandboxes/my-sandbox")