Tworzenie i zarządzanie piaskownicami za pomocą SDK

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_name
  • spec.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")

Dodatkowe zasoby