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


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

Каждое приложение Databricks может включать зависимости для Python, Node.jsили обоих. Эти зависимости определяются в файлах, относящихся к языку:

Определение зависимостей Python с помощью pip

Приложения, которые используют pip, поставляются с набором предварительно установленных библиотек Python. Чтобы определить дополнительные библиотеки Python, используйте requirements.txt файл. Если какие-либо из перечисленных пакетов соответствуют предварительно установленным, то версии в вашем файле переопределят значения по умолчанию.

Рассмотрим пример.

# Override default version of dash
dash==2.10.0

# Add additional libraries not pre-installed
requests==2.31.0
numpy==1.24.3

# Specify a compatible version range
scikit-learn>=1.2.0,<1.3.0

Предварительно установленные библиотеки Python

Следующие библиотеки Python предварительно установлены для приложений, основанных на pip. Вам не нужно включать их в requirements.txt, если вам не требуется другая версия.

Библиотека Версия
databricks-sql-connector (коннектор SQL для платформы Databricks) 3.4.0
databricks-sdk 0.33.0
mlflow-skinny 2.16.2
gradio 4.44.0
streamlit 1.38.0
блестящий 1.1.0
тире 2.18.1
колба 3.0.3
fastapi 0.115.0
uvicorn[standard] 0.30.6
гуникорн 23.0.0
платформа huggingface-hub 0.35.3
dash-ag-grid 31.2.0
Dash-mantine-components 0.14.4
Dash-bootstrap-components 1.6.0
библиотека Plotly для визуализации данных 5.24.1
график-resampler 0.10.0

Определение зависимостей Python с помощью uv

Если ваше приложение использует uv для управления зависимостями, задайте зависимости Python в файле pyproject.toml, вместо requirements.txt. Предварительно установленные библиотеки недоступны для приложений на основе uv. Необходимо указать все зависимости в вашем pyproject.toml. Вы также можете указать любую версию Python с помощью поля requires-python, в отличие от приложений, основанных на pip, которые используют Python 3.11.

Во время развертывания Databricks Apps выбирает стратегию установки в зависимости от того, какие файлы присутствуют:

  • Если requirements.txt существует, приложение использует pip для установки зависимостей, независимо от наличия pyproject.toml. requirements.txt всегда имеет приоритет.
  • Если requirements.txt не существует, а pyproject.toml и uv.lock существуют, приложение использует uv для установки зависимостей из файла блокировки.

Установщик uv создает и управляет собственной виртуальной .venv средой, поэтому вам не нужно создавать каталог.

В следующем примере показано минимальное значение pyproject.toml для приложения Databricks:

[project]
name = "my-app"
requires-python = ">=3.11"
dependencies = [
    "dash==2.10.0",
    "requests==2.31.0",
]

Чтобы использовать uv, необходимо включить файл uv.lock в комплект с вашим pyproject.toml. Создайте его, запустив uv lock локально и включив его в каталог приложения.

Определение зависимостей Node.js

Чтобы определить библиотеки Node.js, добавьте package.json файл в корневой каталог приложения. Во время развертывания Azure Databricks обнаруживает этот файл и выполняет npm install для установки всех зависимостей, перечисленных в нем.

Например, package.json файл для приложения React с помощью Vite может выглядеть следующим образом:

{
  "name": "react-fastapi-app",
  "version": "1.0.0",
  "private": true,
  "type": "module",
  "scripts": {
    "build": "npm run build:frontend",
    "build:frontend": "vite build frontend"
  },
  "dependencies": {
    "react": "^18.2.0",
    "react-dom": "^18.2.0",
    "typescript": "^5.0.0",
    "vite": "^5.0.0",
    "@vitejs/plugin-react": "^4.2.0",
    "@types/react": "^18.2.0",
    "@types/react-dom": "^18.2.0"
  }
}

Замечание

Перечислите все пакеты, необходимые для npm run build под dependencies, а не devDependencies. Если вы установите NODE_ENV=production в переменных среды, процесс развертывания пропустит установку devDependencies.

Избегайте конфликтов версий

Помните следующее при определении зависимостей:

  • Для приложений на основе pip, переопределение предварительно установленных пакетов может привести к проблемам совместимости, если указанная версия значительно отличается от предварительно установленной.
  • Всегда тестируйте приложение, чтобы убедиться, что изменения версии пакета не содержат ошибок.
  • Фиксирование явных версий в requirements.txt помогает обеспечивать согласованное поведение приложений во всех развертываниях.
  • При использовании uv необходимо добавить файл uv.lock, чтобы обеспечить полностью воспроизводимые установки в различных контекстах развертывания.

Установка зависимостей и управление ими

Библиотеки, определенные в requirements.txt, pyproject.tomlи package.json устанавливаются непосредственно в контейнере, работающем на выделенных вычислительных ресурсах. Вы несете ответственность за управление и исправление этих зависимостей.

Библиотеки можно указать из нескольких источников в файлах зависимостей:

  • Библиотеки, скачанные из общедоступных репозиториев, таких как PyPI и npm
  • Частные репозитории, аутентифицирующиеся с использованием учетных данных, хранящихся в секретах Azure Databricks
  • Библиотеки, хранящиеся в каталоге /Volumes/ (например, /Volumes/<catalog>/<schema>/<volume>/<path>)

Установка из частных репозиториев

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

env:
  - name: PIP_INDEX_URL
    valueFrom: my-pypi-secret

Конфигурация сети рабочей области должна разрешить доступ к частному репозиторию. См . статью "Настройка сети для приложений Databricks".

Установка файлов колес из томов каталога Unity

Чтобы установить пакеты Python из wheel-файлов, хранящихся в репозиториях каталога Unity, выполните следующие действия.

  1. Добавьте том каталога Unity в качестве ресурса в приложение. См . том каталога Unity.
  2. Ссылка на полный путь к файлу колесика непосредственно в вашей requirements.txt:
/Volumes/<catalog>/<schema>/<volume>/my_package-1.0.0-py3-none-any.whl

Замечание

Ссылки на переменные среды не поддерживаются в requirements.txt. Необходимо жестко закодировать полный путь к файлу колесика.

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