Настройте версии среды для конвейеров

Important

Версии среды для конвейеров Lakeflow доступны в рамках общедоступной предварительной версии.

Версия среды фиксирует версию языка Python и набор предварительно установленных библиотек Python, доступных для Python-кода вашего конвейера. Все внешние зависимости, которые вы добавляете в конвейер, сложены поверх этой базы.

Версии окружения отвязывают среду выполнения Python для конвейера от версии Databricks Runtime, в которой выполняется конвейер. Хотя задана версия среды, обновления Среды выполнения Databricks не изменяют версию языка Python или предварительно установленные версии библиотеки. Среда выполнения Python также соответствует бессерверным заданиям и записным книжкам, используюющим ту же версию среды. Чтобы узнать текущую версию Databricks Runtime для конвейеров Lakeflow, ознакомьтесь с примечаниями к выпуску конвейеров Lakeflow и процедурой обновления версии.

Databricks автоматически мигрирует подходящие конвейеры на версию среды. См. Автоматическая миграция.

Important

Конвейеры с версией среды выполняют Python-код через Spark Connect, что может изменять поведение некоторого кода конвейера. Полный список ограничений и изменений поведения см. раздел «Совместимость версий среды».

Requirements

К версиям среды предъявляются следующие требования:

  • Конвейер должен использовать Unity Catalog. Конвейеры хранилища метаданных Hive не поддерживаются.

Поддерживаемые версии среды

Конвейеры Lakeflow поддерживают среду версии 3 и 4 в бессерверных и классических вычислительных средах. Сведения о версии языка Python и полном списке предустановленных библиотек Python, доступных в каждой версии, см. в справочнике по версиям среды.

Автоматическая миграция

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

  • Поведение проверяется перед миграцией. Databricks сканирует ваш конвейер на наличие шаблонов кода, которые вели бы себя иначе в Spark Connect, и сравнивает план вывода конвейера до и после миграции. См. Совместимость версий среды.
  • Неудачная миграция автоматически откатывается. Если мигрированное обновление по какой-либо причине не удаётся, оно останавливается до записи любых данных, и конвейер автоматически возвращается к прежнему времени выполнения при следующем обновлении. Никаких действий не требуется.
  • Ваши явно заданные настройки всегда учитываются. Если вы сами зададите environment_version, Databricks никогда не будет его переопределять.

После успешной миграции конвейер в дальнейшем работает в этой версии среды. Вы можете увидеть выбранную версию в настройках конвейера, ответе GetPipeline API и журнале runtime_details событий.

Что не мигрируется автоматически

Конвейер не мигрируется автоматически, если применимо любое из следующих условий:

Конвейеры, которые не были мигрированы, автоматически продолжают работать на предыдущем Python-режиме без изменений. Вы можете самостоятельно включить версию среды, как только конвейер будет соответствовать требованиям.

Включите версию окружения самостоятельно

Автоматическая миграция охватывает большинство конвейеров. Вы также можете явно указать версию среды, например чтобы выполнить миграцию раньше или зафиксировать конкретную версию, через интерфейс редактора конвейеров, REST API Pipelines или Declarative Automation Bundles.

Прежде чем явно включать версию окружения, проверьте, совместим ли ваш конвейер со Spark Connect. Если Databricks обнаружит, что включение этой версии изменит поведение вашего конвейера, обновление завершится с ошибкой до записи каких-либо данных, а в сообщении об ошибке будет указано различие, которое необходимо устранить.

Включение с помощью пользовательского интерфейса

  1. В редакторе конвейера нажмите кнопку "Параметры".
  2. В разделе «Среда конвейера» выберите значок «Карандаш».Изменить среду.
  3. Выберите версию среды из раскрывающегося списка.
  4. Сохраните параметры конвейера.

Внешние зависимости, добавленные в разделе Среда конвейера, накладываются поверх библиотек, входящих в состав выбранной версии среды. См. Управление зависимостями Python для конвейеров.

Включение с помощью API

REST API для конвейеров принимает блок environment при создании и обновлении конвейера. Аутентификация с помощью токена персонального доступа должна быть включена для рабочей области.

Чтобы создать конвейер с версией среды, выполните приведенные действия.

curl --request POST \
  --url 'https://<workspace-host>/api/2.0/pipelines' \
  --header 'Authorization: Bearer <personal-access-token>' \
  --header 'Content-Type: application/json' \
  --data-raw '{
    "name": "<pipeline-name>",
    "catalog": "<catalog>",
    "schema": "<schema>",
    "channel": "CURRENT",
    "environment": {
      "environment_version": "4",
      "dependencies": [
        "simplejson==3.19.*"
      ]
    }
  }'

Чтобы установить версию среды для существующего конвейера, отправьте тот же блок environment с PUT /api/2.0/pipelines/<pipeline-id>.

Включение с помощью декларативных пакетов автоматизации

При создании конвейера с помощью декларативных пакетов автоматизации можно задать версию среды в определении YAML конвейера.

  1. Убедитесь, что интерфейс командной строки Databricks находится в версии 0.294.0 или более поздней версии. В противном случае выполните обновление, следуя руководству по установке.
  2. Создайте пакет, следуя руководству по созданию пакета конвейеров.
  3. Найдите YAML-файл конвейера в вашем пакете, обычно это <bundle-folder>/resources/<pipeline_name>_pipeline.yml.
  4. Задайте поля environment_version и dependencies в YAML-файле конвейера:
resources:
  pipelines:
    my_pipeline:
      name: my_pipeline
      catalog: ${var.catalog}
      schema: ${var.schema}
      root_path: '../src/my_pipeline'
      libraries:
        - glob:
            include: ../src/my_pipeline/transformations/**
      environment:
        environment_version: 4
        dependencies:
          - --editable ${workspace.file_path}

Проверьте версию среды в конвейере

Чтобы проверить, в какой версии среды работает конвейер, независимо от того, указали ли вы её явно или Databricks выбрал её во время автоматической миграции:

  • Пользовательский интерфейс. Откройте параметры конвейера и проверьте раздел "Среда конвейера " или проверьте область JSON для environment.environment_version поля.
  • API: вызовите GET /api/2.0/pipelines/<pipeline-id> и найдите environment.environment_version в ответе. Это показывает определенную версию; Чтобы увидеть версию, выбранную автоматической миграцией, используйте журнал событий ниже.
  • Журнал событий: Проверьте событие runtime_details , которое сообщает о версии среды, использованной для обновления. См. сведения о событии runtime_details.

Отключить или откатить версию окружения

Вам не нужно вручную откатывать автоматическую миграцию. Миграция, которая не удалась, автоматически отменяется при следующем обновлении. После удаления версии среды конвейер возвращается в предыдущую конфигурацию Python среды выполнения. Если произойдёт что-то неожиданное, обращайтесь в поддержку Azure Databricks.

Дополнительные ресурсы