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


Режимы развертывания пакета ресурсов Databricks

В этой статье описывается синтаксис режимов развертывания пакета ресурсов Databricks. Пакеты обеспечивают программное управление рабочими процессами Azure Databricks. См. Что такое пакеты ресурсов Databricks?

В рабочих процессах CI/CD разработчики обычно кодируют, тестируют, развертывают и запускают решения на различных этапах или в режимах. Например, самый простой набор режимов включает режим разработки для предварительной проверки, а затем режим производственный для проверенных результатов. Наборы ресурсов Databricks предоставляют необязательную коллекцию поведения по умолчанию, соответствующую каждому из этих режимов. Чтобы использовать эти поведения для конкретного объекта, задайте mode или настройте presets для цели в конфигурационной карте targets. Сведения о targets см. в разделе "Сопоставление целевых объектов конфигурации пакета".

Режим разработки

Чтобы развернуть пакет в режиме разработки, сначала необходимо добавить сопоставление mode и установить параметр development для целевого объекта. Например, этот объект dev рассматривается как целевой объект разработки.

targets:
  dev:
    mode: development

Развертывание целевого объекта в режиме разработки, выполнив databricks bundle deploy -t <target-name> команду, реализует следующие действия, которые можно настроить с помощью предустановок:

  • Предварительно добавляет все ресурсы, которые не развертываются как файлы или записные книжки с префиксом [dev ${workspace.current_user.short_name}] и тегами каждого развернутого задания и конвейера с тегом dev Azure Databricks.
  • Помечает все связанные развернутые конвейеры DLT как development: true.
  • Включает использование --compute-id <cluster-id> в вызовах команды bundle deploy, что позволяет переопределять все существующие определения кластеров, которые уже указаны в конфигурационном файле соответствующего пакета. Вместо использования --compute-id <cluster-id> в связанных вызовах команды bundle deploy можно задать сопоставление compute_id здесь или в качестве дочернего сопоставления bundle с идентификатором используемого кластера.
  • Приостанавливает все расписания и триггеры на развернутых ресурсах, таких как задания или мониторы качества. Возобновите расписания и триггеры для отдельного задания, установив schedule.pause_status на UNPAUSED.
  • Включает параллельные запуски на всех развернутых заданиях для ускорения итерационного процесса. Отключите одновременные запуски для отдельного задания, установив max_concurrent_runs в 1.
  • Отключает блокировку развертывания для ускорения итерации. Эта блокировка предотвращает конфликты развертывания, которые вряд ли возникают в режиме разработки. Повторно включите блокировку, задав значение bundle.deployment.lock.enabledtrue.

Рабочий режим

Чтобы развернуть пакет в рабочем режиме, необходимо сначала добавить сопоставление mode и установить значение productionв целевую цель. Например, объект с именем prod рассматривается как производственный целевой объект.

targets:
  prod:
    mode: production

Развертывание целевого объекта в рабочем режиме, выполнив databricks bundle deploy -t <target-name> команду, реализует следующее поведение:

  • Проверяет, что все развернутые связанные конвейеры DLT помечены как development: false.

  • Проверяет, совпадает ли текущая ветвь Git с ветвью Git, указанной в задаче. Указание ветви Git в целевом объекте является необязательным и может выполняться с дополнительным git свойством следующим образом:

    git:
      branch: main
    

    Эту проверку можно переопределить, указав --force при развертывании.

  • Databricks рекомендует использовать учётные записи служб для рабочих развертываний. Это можно применить, установив run_as субъект-службу. См. Управление служебными учетными записями и указание идентификатора выполнения для рабочего процесса в пакетах ресурсов Databricks. Если вы не используете служебные принципы, обратите внимание на следующее дополнительное поведение:

    • Проверяет, что artifact_path, file_path сопоставления или root_path, state_path сопоставления не переопределяются для конкретного пользователя.
    • Проверяет, указаны ли сопоставления run_as и permissions, для указания, какие идентификаторы имеют определенные разрешения для развертываний.
  • В отличие от предыдущего поведения при установке сопоставления mode на development, установка сопоставления mode на production не позволяет переопределять какие-либо существующие определения кластеров, указанные в связанном файле конфигурации пакета, например, с использованием параметра --compute-id <cluster-id> или сопоставления compute_id.

Пользовательские предустановки

Пакеты ресурсов Databricks поддерживают настраиваемые предустановки для целевых объектов, что позволяет настраивать поведение целевых объектов. Доступные предустановки перечислены в следующей таблице:

Предварительно заданное значение Описание
name_prefix Префиксная строка, которая добавляется к именам ресурсов.
pipelines_development Независимо от того, находится ли конвейер в режиме разработки. Допустимые значения: true или false.
trigger_pause_status Состояние приостановки для применения ко всем триггерам и расписаниям. Допустимые значения: PAUSED или UNPAUSED.
jobs_max_concurrent_runs Максимально допустимое количество одновременных запусков для заданий.
tags Набор тегов key:value, которые применяются ко всем ресурсам, поддерживающим теги, включая задания и эксперименты. Пакеты ресурсов Databricks не поддерживают теги для schema ресурса.
source_linked_deployment Зарезервировано для дальнейшего использования. Указывают ли создаваемые во время развертывания ресурсы на исходные файлы в рабочей области, а не на их копии.

Примечание.

Если заданы оба mode и presets, предустановки переопределяют поведение режима по умолчанию, а параметры отдельных ресурсов переопределяют предустановки. Например, если для расписания задано значение UNPAUSED, но для предустановки trigger_pause_status задано значение PAUSED, расписание будет возобновлено.

В следующем примере показана настраиваемая конфигурация предустановок для целевого объекта с именем dev:

targets:
  dev:
    presets:
      name_prefix: 'testing_' # prefix all resource names with testing_
      pipelines_development: true # set development to true for pipelines
      trigger_pause_status: PAUSED # set pause_status to PAUSED for all triggers and schedules
      jobs_max_concurrent_runs: 10 # set max_concurrent runs to 10 for all jobs
      tags:
        department: finance