SDK ile kum kutuları oluşturun ve yönetin

Important

Bu özellik Beta sürümündedir. Bu özelliği çalışma alanında önizlemeyi etkinleştirmek için, çalışma alanı önizlemeleri sayfasında Databricks Sandbox ayarını seçin. Bkz. Azure Databricks önizlemelerini yönetme.

Python için Databricks SDK, sandbox oluşturmak, komutları çalıştırmak ve yaşam döngülerini yönetmek için bir sandbox istemcisi içerir. Bu sayfa bu işlemleri anlatıyor. Databricks Sandbox'a genel bir bakış için bakınız: Databricks Sandbox.

SDK’yı yükleyin

Python için Databricks SDK'yı kurun veya yükseltin; bu SDK kum havuz istemcisini içerir:

pip install --upgrade databricks-sdk

WorkspaceClient Oluştur

Tüm kum kutusu işlemleri bir WorkspaceClient üzerinden gerçekleştirilir. Ortamınızdan çözümlenen kimlik bilgilerini, bir yapılandırma profilini veya açıkça belirtilmiş bir ana bilgisayar ve belirteci kullanarak bir WorkspaceClient oluşturun:

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...")

SDK'nın yapılandırması ve doğrulaması hakkında daha fazla bilgi için Databricks SDK for Python sayfasına bakınız.

Bir kum havuzu oluşturun

ID ile bir sandbox oluşturun. İsteğe bağlı olarak, etkinlik olmadan sandbox’un ne kadar süre çalışır durumda kalacağını denetleyen etkinliksizlik zaman aşımı süresi gibi hesaplama yapılandırmasını ayarlayabilirsiniz:

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"

Tip

Kendi konteyner görselinizden bir sandbox oluşturmak için spec.environment.image_uri ayarlayın. Bkz. Özel bir görüntüden sandbox oluşturma

Sandbox'ları alın ve listeleyin

Tek bir kum havuzunu isimle alın veya tüm kum kutularını listeleyin:

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)

Bir kum havuzunda bir komut çalıştır

Bir kum havuzunda bir komut çalıştırın ve çıktısını okuyun. İlk argüman sandbox adıdır, ardından çalıştırılacak program ve argümanları gelir. Bu, kabuk olmadan doğrudan bir exec'tir; bu nedenle bir kabuk komutu çalıştırmak için /bin/bash -c çağırın. Herhangi bir ortam değişkenini şu içinden envsgeçirin:

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

Sandbox meta verilerini güncelleme

Bir kum kutusunun gösterim adını ve hareketsizlik süresini güncelleyebilirsiniz. Sadece aşağıdaki alan yolları kabul edilir. Diğer tüm yollar INVALID_PARAMETER_VALUE döndürür:

  • 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"]),
)

Bir sandbox'ı durdurup yeniden başlat

Ana dizininizi korurken işlem kaynaklarını serbest bırakmak için bir sandbox’u durdurun:

w.sandbox.stop_sandbox("sandboxes/my-sandbox")    # Moves to SANDBOX_STATE_STOPPED

Çalışmaya devam etmek için sandbox'a tekrar başlayın:

w.sandbox.start_sandbox("sandboxes/my-sandbox")   # Moves to SANDBOX_STATE_RUNNING

Bir sandbox, her başlatmadan 24 saat sonra otomatik olarak durur; yani onu yeniden başlatmak yeni bir 24 saatlik dönem başlatır. Databricks Sandbox sınırlamalarına bakınız.

Bir kum kutusunu sil

İşiniz bitince Sandbox'ı silin. Bir sandbox'u silmek, ana dizinini kaldırır ve sandbox için faturalanmayı durdurur:

w.sandbox.delete_sandbox("sandboxes/my-sandbox")

Ek kaynaklar