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


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

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

  • Используйте файл requirements.txt для указания дополнительных пакетов Python.
  • Используйте файл package.json для указания пакетов Node.js.

Каждое приложение также поставляется с предварительно установленным набором библиотек Python. См. предварительно установленные библиотеки Python.

Определение зависимостей 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

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

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

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

Определение зависимостей 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.

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

Библиотеки, определенные в requirements.txt и 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".