Рекомендации по бессерверным вычислениям

Следуйте этим рекомендациям, чтобы повысить производительность, сократить затраты и повысить надежность при использовании бессерверных вычислений для записных книжек, заданий и конвейеров в Azure Databricks.

Перенос рабочих нагрузок на бессерверные вычислительные ресурсы

Пошаговые инструкции по переносу классических вычислений на бессерверные, включая предварительные требования, необходимые изменения кода, стратегии тестирования и поэтапной план развертывания, см. в статье "Миграция с классических вычислений на бессерверные вычисления".

Указание версий пакета Python

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

Например, файл requirements.txt должен включать определенные версии пакетов, как показано ниже.

numpy==2.2.2
pandas==2.2.3

Используйте уникальные имена для временных представлений

Бессерверные вычисления используют Spark Connect, архитектуру клиентского сервера, которая оценивает временные представления лениво. Это поведение отличается от классической архитектуры Spark и может привести к ошибкам при повторном использовании кода одного и того же временного имени представления, например в цикле.

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

Сеть или подключение

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

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

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

Например, чтобы обеспечить подключение со стороны бессерверных вычислительных ресурсов, можно добавить набор исходящих IP-адресов Azure Databricks в список разрешённых адресов во внешних VPC-сетях. Azure Databricks IP-адреса подвергаются изменению, поэтому необходимо создать автоматизацию, чтобы сохранить список разрешений текущим, а не использовать однократную копию. Подробнее см. Настройка брандмауэра для доступа к бессерверным вычислениям.

Чтобы подключиться к корпоративным приложениям (например, Salesforce) или управляемым базам данных (например, MySQL), используйте Lakeflow Connect.

Чтобы ограничить и отслеживать исходящий трафик из бессерверных вычислений, настройте элементы управления исходящего трафика для рабочей области. См. раздел "Управление политиками сети" для управления бессерверным исходящим трафиком.

Бессерверные версии среды

Бессерверные вычислительные ресурсы используют версии среды вместо традиционных версий Databricks Runtime. Это сдвиг в управлении совместимостью рабочих нагрузок:

  • Подход к среде выполнения Databricks: вы выбираете определенную версию среды выполнения Databricks для рабочей нагрузки и управляете обновлениями вручную, чтобы обеспечить совместимость.
  • подход Serverless: вы пишете код для версии среды и Azure Databricks независимо обновляет базовый сервер.

Версии среды предоставляют стабильный клиентский API, обеспечивающий совместимость рабочей нагрузки, а Azure Databricks независимо обеспечивает улучшения производительности, улучшения безопасности и исправления ошибок, не требуя изменения кода в рабочих нагрузках.

Каждая версия среды включает обновленные системные библиотеки, функции и исправления ошибок, сохраняя обратную совместимость для рабочих нагрузок. Azure Databricks поддерживает каждую версию среды в течение трех лет с даты выпуска, предоставляя прогнозируемый жизненный цикл для планирования обновлений.

Чтобы выбрать базовую среду для бессерверной рабочей нагрузки, см. раздел "Выбор базовой среды". Подробности о доступных версиях среды и их функциях см. раздел «Версии окружения».

Управление зависимостями

Бессерверные вычисления не поддерживают скрипты инициализации. Вместо этого используйте бессерверные среды для установки и управления библиотеками для бессерверных рабочих нагрузок. Среды кэшируют установленные пакеты, что снижает задержку запуска для последующих запусков.

Чтобы использовать библиотеки из частного репозитория, настройте предварительно подписанные URL-адреса для доступа к репозиторию с проверкой подлинности в параметрах среды.

Выбор режима производительности

Azure Databricks бессерверные вычислительные ресурсы предоставляют два режима производительности, которые позволяют балансировать скорость и затраты на основе типа рабочей нагрузки следующим образом:

  • Режим, оптимизированный для производительности (по умолчанию): лучше всего подходит для интерактивных рабочих нагрузок, требующих быстрого запуска. Azure Databricks поддерживает пул теплых вычислительных ресурсов, чтобы свести к минимуму время ожидания.
  • Стандартный режим: лучше всего подходит для автоматизированных пакетных заданий и конвейеров, которые могут допускать более длительное время запуска от 4 до 6 минут. Стандартный режим может снизить затраты до 70% по сравнению с оптимизированным для производительности режимом. Стандартный режим доступен для Lakeflow Jobs и конвейеров Lakeflow, но не для ноутбуков.

Выберите режим, который лучше всего соответствует требованиям рабочей нагрузки. Для запланированных заданий, где задержка запуска не является критической, стандартный режим обычно предлагает лучшее значение. Сведения о текущих ценах см. на странице цен Databricks.

Оптимизация рабочих нагрузок потоковой передачи

Бессерверные вычисления поддерживают структурированную потоковую передачу.Trigger.AvailableNow Интервалы триггеров на основе времени не поддерживаются. Дополнительные сведения о поддерживаемых триггерах, примерах кода и альтернативных вариантах непрерывной потоковой передачи см. в разделе "Потоковая передача " руководства по миграции.

При использовании Trigger.AvailableNowкаждый триггер обрабатывает все доступные данные в источнике, что может привести к более крупным микропакетам, чем триггер на основе времени. Чтобы предотвратить ошибки вне памяти и обеспечить прогнозируемую производительность, ограничьте объем данных, обработанных на микропакет, задав maxFilesPerTrigger или maxBytesPerTrigger.

Чтобы ознакомиться с руководством по выбору, которое помогает подобрать подходящий бессерверный продукт для сценариев потоковой передачи, см. Потоковая передача на бессерверных вычислениях.

Отладка бессерверных рабочих нагрузок

Пользовательский интерфейс Spark недоступен в бессерверных вычислениях. Вместо этого используйте профиль запроса для анализа производительности запросов и устранения неполадок с рабочими нагрузками. Профиль запроса предоставляет подробные сведения о выполнении и доступен из журнала запросов в пользовательском интерфейсе Azure Databricks.

Прием данных из внешних систем

Альтернативные стратегии, которые можно использовать для приема, включают:

  • Строительные блоки на основе SQL, такие как потоковые таблицы COPY INTO и ,.

Альтернативы приема

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

  • Если вы хотите ограничить дублирование данных или гарантировать, что запрашиваются самые свежие данные, Databricks рекомендует использовать OpenSharing. См. раздел "Что такое OpenSharing?".
  • Для нерегламентированных отчетов и проверки концепции на практике Федерация «Lakehouse» предоставляет возможность запрашивать внешние базы данных непосредственно из Azure Databricks без перемещения данных, под управлением Unity Catalog. См. статью "Подключение к внешним базам данных и каталогам".

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

Неподдерживаемые приемники

Если система приемника не поддерживается в качестве прямого целевого объекта записи из бессерверных вычислений, вы можете использовать каталог REST Iceberg в Unity Catalog, чтобы позволить этой системе напрямую считывать данные из таблиц Azure Databricks. Например, Snowflake не поддерживает бессерверное хранилище, но его можно настроить в качестве клиента Iceberg для чтения таблиц, управляемых Unity Catalog.

Этот подход позволяет избежать дублирования данных и сохраняет каталог Unity в качестве уровня управления для всех операций чтения. Для получения информации о поддерживаемых клиентах и шагах конфигурации см. статью Доступ к таблицам Azure Databricks из клиентов Apache Iceberg.

Поддерживаемые конфигурации Spark

Чтобы автоматизировать настройку Spark на бессерверных вычислениях, Azure Databricks удалила поддержку настройки большинства конфигураций Spark вручную. Чтобы просмотреть список поддерживаемых параметров конфигурации Spark, см. статью "Настройка свойств Spark для бессерверных записных книжек и заданий".

Запуск задания на бессерверной вычислительной платформе завершится неудачей, если вы установите неподдерживаемую конфигурацию Spark.

Мониторинг стоимости бессерверных вычислений

Существует несколько функций, которые можно использовать для мониторинга затрат на бессерверные вычисления: