Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Important
Эта функция доступна в бета-версии. Чтобы включить предпросмотр этой функции в рабочем пространстве, перейдите в настройку Databricks Sandbox на странице предварительного просмотра рабочего пространства. См. статью "Управление предварительными версиями Azure Databricks".
В настоящее время Databricks не взимает плату за использование этой функции. Однако стоимость и ценообразование функций в бета-версии могут меняться.
SDK Databricks для Python включает клиент-песочницу для создания песочниц, выполнения команд в них и управления их жизненным циклом. На этой странице подробно описаны эти операции. Общие сведения о Databricks Sandbox см. в Databricks Sandbox.
Установите SDK
Установите или обновите SDK Databricks для Python, который включает клиент песочницы:
pip install --upgrade databricks-sdk
Создать WorkspaceClient
Все операции в песочнице выполняются через WorkspaceClient. Создайте WorkspaceClient, используя учётные данные, полученные из вашего окружения, профиля конфигурации или явно указанных хоста и токена:
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 см. Databricks SDK для Python.
Создайте песочницу
Создайте песочницу по ID. Вы можете настроить спецификацию вычислений, например, тайм-аут неактивности, который определяет, как долго песочница работает без активности:
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"
Получите и разместите песочницы
Найдите одну песочницу по названию или перечислите все песочницы:
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)
Запустите команду в песочнице
Запустите команду в песочнице и прочитайте её вывод. Первый аргумент — это название песочницы, затем программа для запуска и её аргументы. Это прямой вызов exec без использования оболочки, поэтому, чтобы выполнить команду оболочки, вызовите /bin/bash -c. Пропустите любые переменные среды через 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
Обновление метаданных песочницы
Вы можете обновить отображаемое название песочницы и тайм-аут бездействия. Принимаются только следующие полевые маршруты. Любой другой путь возвращает 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"]),
)
Остановись и запусти песочницу заново
Остановите песочницу, чтобы высвободить её вычислительные ресурсы с сохранением домашнего каталога:
w.sandbox.stop_sandbox("sandboxes/my-sandbox") # Moves to SANDBOX_STATE_STOPPED
Запустите песочницу заново, чтобы возобновить работу:
w.sandbox.start_sandbox("sandboxes/my-sandbox") # Moves to SANDBOX_STATE_RUNNING
Удалить песочницу
Удалите песочницу, когда закончите. Удаление песочницы удаляет её домашний каталог и прекращает выставление счетов за песочницу:
w.sandbox.delete_sandbox("sandboxes/my-sandbox")