Поделиться через


Stack CLI (устаревшая версия)

Важно!

Поддержка этой документации прекращена, она может больше не обновляться.

Эта информация относится к устаревшим интерфейсам командной строки Databricks версии 0.18 и ниже. Databricks рекомендует использовать более новую версию Интерфейса командной строки Databricks версии 0.205 или более поздней. См. сведения о интерфейсе командной строки Databricks?. Чтобы найти версию интерфейса командной строки Databricks, выполните команду databricks -v.

Сведения о миграции из Databricks CLI версии 0.18 или ниже в Databricks CLI версии 0.205 или более поздней, см. в статье Databricks CLI.

Интерфейс командной строки Databricks версии 0.205 и выше не поддерживает интерфейс командной строки стека. Databricks рекомендует вместо этого использовать поставщик Databricks Terraform.

Примечание.

Для работы с интерфейсом командной строки стека требуется интерфейс командной строки Databricks 0.8.3 или более поздней версии.

Интерфейс командной строки стека — это инструмент для управления стеком ресурсов Azure Databricks, таких как задания, записные книжки и файлы DBFS. Вы можете хранить записные книжки и файлы DBFS локально и создать JSON-шаблон конфигурации стека, который задает сопоставления локальных файлов с путями в рабочей области Azure Databricks, а также конфигурации заданий, запускающих записные книжки.

Используйте для развертывания стека и управления им интерфейс командной строки стека с JSON-шаблоном конфигурации стека.

Чтобы запустить подкоманды CLI для стека Databricks, добавьте их в databricks stack.

databricks stack --help
Usage: databricks stack [OPTIONS] COMMAND [ARGS]...

  [Beta] Utility to deploy and download Databricks resource stacks.

Options:
  -v, --version   [VERSION]
  --debug         Debug Mode. Shows full stack trace on error.
  --profile TEXT  CLI connection profile to use. The default profile is
                  "DEFAULT".
  -h, --help      Show this message and exit.

Commands:
  deploy    Deploy a stack of resources given a JSON configuration of the stack
    Usage: databricks stack deploy [OPTIONS] CONFIG_PATH
    Options:
       -o, --overwrite  Include to overwrite existing workspace notebooks and DBFS
                        files  [default: False]
  download  Download workspace notebooks of a stack to the local filesystem
            given a JSON stack configuration template.
    Usage: databricks stack download [OPTIONS] CONFIG_PATH
    Options:
       -o, --overwrite  Include to overwrite existing workspace notebooks in the
                        local filesystem   [default: False]

Развертывание стека в рабочей области

Эта подкоманда развертывает стек. Сведения о настройке стека см. в этом разделе.

databricks stack deploy ./config.json

JSON-шаблон конфигурации стека содержит пример config.json.

Скачать изменения записной книжки стека

Эта подкоманда скачивает записные книжки стека.

databricks stack download ./config.json

Примеры

Настройка стека

Структура файла в примере стека

tree
.
├── notebooks
|   ├── common
|   |   └── notebook.scala
|   └── config
|       ├── environment.scala
|       └── setup.sql
├── lib
|   └── library.jar
└── config.json

Этот пример стека содержит основную записную книжку notebooks/common/notebook.scala вместе с записными книжками настройки в папке notebooks/config. В lib/library.jar есть зависимость JAR-библиотеки стека. config.json — это JSON-шаблон конфигурации стека. Он передается в интерфейс командной строки (CLI) стека для его развертывания.

JSON-шаблон конфигурации стека

Шаблон конфигурации стека описывает его конфигурацию.

cat config.json
{
  "name": "example-stack",
  "resources": [
  {
    "id": "example-workspace-notebook",
    "service": "workspace",
    "properties": {
      "source_path": "notebooks/common/notebook.scala",
      "path": "/Users/example@example.com/dev/notebook",
      "object_type": "NOTEBOOK"
    }
  },
  {
    "id": "example-workspace-config-dir",
    "service": "workspace",
    "properties": {
      "source_path": "notebooks/config",
      "path": "/Users/example@example.com/dev/config",
      "object_type": "DIRECTORY"
    }
  },
  {
    "id": "example-dbfs-library",
    "service": "dbfs",
    "properties": {
      "source_path": "lib/library.jar",
      "path": "dbfs:/tmp/lib/library.jar",
      "is_dir": false
    }
  },
    {
      "id": "example-job",
      "service": "jobs",
      "properties": {
        "name": "Example Stack CLI Job",
        "new_cluster": {
          "spark_version": "7.3.x-scala2.12",
          "node_type_id": "Standard_DS3_v2",
          "num_workers": 3
        },
        "timeout_seconds": 7200,
        "max_retries": 1,
        "notebook_task": {
          "notebook_path": "/Users/example@example.com/dev/notebook"
        },
        "libraries": [
          {
            "jar": "dbfs:/tmp/lib/library.jar"
          }
        ]
      }
    }
  ]
}

Каждое задание, записная книжка рабочей области, каталог рабочей области, файл DBFS или каталог DBFS определяются в виде объекта ResourceConfig. Каждый объект ResourceConfig, который представляет рабочую область или актив DBFS, содержит сопоставление файла или каталога, где они существуют локально (source_path), с их расположением в рабочей области или DBFS (path).

Схема шаблона конфигурации стека устанавливает схему для шаблона конфигурации стека.

Развертывание стека

Стек развертывается с помощью команды databricks stack deploy <configuration-file>.

databricks stack deploy ./config.json

Во время развертывания стека ресурсы DBFS и рабочей области передаются в рабочую область Azure Databricks и создаются задания.

Во время развертывания стека JSON-файл StackStatus для развертывания сохраняется в том же каталоге, что и шаблон конфигурации стека, а к его имени непосредственно перед расширением .json добавляется deployed (например, ./config.deployed.json). Этот файл используется интерфейсом командной строки стека для наблюдения за ранее развернутыми ресурсами в рабочей области.

Схема состояния стека описывает схему конфигурации стека.

Важно!

Не пытайтесь изменить или переместить файл состояния стека. Если вы получаете ошибки, касающиеся файла состояния стека, удалите файл и повторите попытку развертывания.

./config.deployed.json
{
  "cli_version": "0.8.3",
  "deployed_output": [
    {
      "id": "example-workspace-notebook",
      "databricks_id": {
        "path": "/Users/example@example.com/dev/notebook"
      },
      "service": "workspace"
    },
    {
      "id": "example-workspace-config-dir",
      "databricks_id": {
        "path": "/Users/example@example.com/dev/config"
      },
      "service": "workspace"
    },
    {
      "id": "example-dbfs-library",
      "databricks_id": {
        "path": "dbfs:/tmp/lib/library.jar"
      },
      "service": "dbfs"
    },
    {
      "id": "example-job",
      "databricks_id": {
        "job_id": 123456
      },
      "service": "jobs"
    }
  ],
  "name": "example-stack"
}

Структуры данных

В этом разделе рассматриваются следующие вопросы.

Схема шаблона конфигурации стека

StackConfig

Это внешние поля шаблона конфигурации стека. Все поля обязательные.

Имя поля Тип Description
имя STRING Имя стека.
ресурсы Список объектов ResourceConfig. Ресурс в Azure Databricks. Ресурсы связаны с тремя службами (пространствами имен REST API): рабочей областью, заданиями и DBFS.

ResourceConfig

Поля для каждого объекта ResourceConfig. Все поля обязательные.

Имя поля Тип Описание
id STRING Уникальный идентификатор ресурса. Уникальность объекта ResourceConfig реализуется принудительным образом.
service ResourceService Служба REST API, с которой работает ресурс. Может принимать одно из следующих значений: jobs,
workspace или dbfs.
свойства ResourceProperties Набор полей в этом списке зависит от службы ResourceConfig.

ResourceProperties

Свойства ресурса в зависимости от службы ResourceService. Поля классифицируются как используемые или не используемые в REST API Azure Databricks. Все перечисленные поля являются обязательными.

service Поля из REST API, используемые в интерфейсе командной строки стека. Поля, используемые только в интерфейсе командной строки (CLI) стека
Рабочая область path: STRING — удаленные пути в рабочей области для записных книжек или каталогов. (Пример: /Users/example@example.com/notebook)

object_type: тип объекта Workspace API— Notebook. Может принимать только значение NOTEBOOK или DIRECTORY.
source_path: STRING — локальный исходный путь к записным книжкам или каталогам рабочей области. Относительный путь к файлу шаблона конфигурации стека или абсолютный путь в файловой системе.
задания: Любое поле в структуре settings или new_settings. Единственное поле, которое не требуется в структуре settings или new_settings, но требуется для CLI стека:

name: STRING — имя задания, которое требуется развернуть. Чтобы избежать создания слишком большого количества повторяющихся заданий, в CLI стека в развернутых заданиях стека соблюдается уникальность имен.
Нет.
dbfs path: STRING — соответствующий удаленный путь DBFS. Это значение должно начинаться с dbfs:/. (Пример: dbfs:/this/is/a/sample/path)

is_dir: BOOL — указывает, является ли путь DBFS каталогом или файлом.
source_path: STRING — локальный исходный путь к файлам или каталогам DBFS. Относительный путь к файлу шаблона конфигурации стека или абсолютный путь в файловой системе.

ResourceService

Каждый ресурс относится к определенной службе, которая соответствует REST API Databricks. Это службы, поддерживаемые интерфейсом командной строки стека.

Служба Description
Рабочая область Записная книжка или каталог рабочей области.
задания: Задание Azure Databricks.
dbfs Файл или каталог DBFS.

Схема состояния стека

StackStatus

После развертывания стека с помощью интерфейса командной строки создается файл состояния стека. Поля верхнего уровня:

Имя поля Тип Description
имя STRING Имя стека. Это то же поле, что и в StackConfig.
cli_version STRING Версия CLI Databricks, используемая для развертывания стека.
deployed_resources Список объектов ResourceStatus. Состояние каждого развернутого ресурса. Для каждого ресурса, определенного в StackConfig, здесь создается соответствующий объект ResourceStatus.

ResourceStatus

Имя поля Тип Описание
id STRING Уникальный идентификатор стека для ресурса.
service ResourceService Служба REST API, с которой работает ресурс. Может принимать одно из следующих значений: jobs,
workspace или dbfs.
databricks_id DatabricksId Физический идентификатор развернутого ресурса. Фактическая схема зависит от типа (службы) ресурса.

DatabricksId

Объект JSON, поле которого зависит от службы.

Service Поле в JSON Тип Описание
Рабочая область path STRING Абсолютный путь к записной книжке или каталогу в рабочей области Azure Databricks. Именование согласовано с API рабочей области.
задания: job_id STRING Идентификатор задания, как показано в рабочей области Azure Databricks. Его можно использовать для обновления уже развернутых заданий.
dbfs path STRING Абсолютный путь к записной книжке или каталогу в рабочей области Azure Databricks. Именование соответствует API DBFS.