Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Приложение Databricks может включать Python зависимости, Node.js зависимости или оба. Вы объявляете зависимости в файлах, специфичных для языка, которые Azure Databricks устанавливает при развертывании приложения:
- Используйте файл
requirements.txtдля пакетов Python, установленных с помощьюpip. См. раздел "Определение зависимостей Python с помощьюpip". - Используйте файл
pyproject.tomlдля пакетов Python, установленных с помощьюuv. См. раздел "Определение зависимостей Python с помощьюuv". - Используйте файл
package.jsonдля пакетов Node.js, установленных с помощьюnpmилиpnpm. См. раздел "Определение Node.js зависимостей".
Определение зависимостей Python с помощью pip
Приложения, которые используют pip, поставляются с набором предварительно установленных библиотек Python. Чтобы определить дополнительные библиотеки Python, используйте requirements.txt файл. Если какие-либо из перечисленных пакетов соответствуют предварительно установленным, то версии в вашем файле переопределят значения по умолчанию.
Горизонтально масштабируемые приложения (бета-версия), преобразованные из стандартных приложений, могут отказаться от предварительно установленных библиотек и запускаться на чистом базовом образе ОС. См. Отказ от предварительно установленных библиотек Python для приложений Databricks.
Рассмотрим пример.
# 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
Приложения на основе pip включают следующие предустановленные библиотеки Python. Вам не нужно добавлять их в 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.
Это же относится к приложениям горизонтального масштабирования, которые отказались от предварительно установленных библиотек. См. Отказ от предварительно установленных библиотек Python для приложений Databricks.
Во время развертывания 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, так и pnpm, и выбирает диспетчер пакетов в зависимости от включённого файла блокировки:
- Если
pnpm-lock.yamlприсутствует, приложение используетpnpm. См. раздел "Использованиеpnpm". - В противном случае приложение использует
npm. - Если оба
pnpm-lock.yamlиpackage-lock.jsonприсутствуют,pnpmимеет приоритет.
Например, 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"
}
}
Замечание
Перечислите все пакеты, необходимые для этапа сборки, в разделе dependencies, а не devDependencies. Если вы установите NODE_ENV=production в переменных среды, процесс развертывания пропустит установку devDependencies.
Использовать pnpm
Чтобы выполнить сборку с pnpm, необходимо включить файл pnpm-lock.yaml рядом с вашим package.json. Создайте его, запустив pnpm install локально и включив его в каталог приложения. Azure Databricks предоставляет pnpm через Corepack.
Обратите внимание на следующие требования для pnpm приложений:
- Зависимости устанавливаются с помощью
pnpm install --frozen-lockfile, поэтомуpnpm-lock.yamlдолжен оставаться синхронизированным сpackage.json. Если возникают расхождения, сборка завершается с ошибкой вместо того, чтобы обновить файл блокировки. После изменения зависимостей заново создайте файл блокировки с помощьюpnpm install. - Необходимо указать команду запуска в
app.yaml. В отличие отnpmприложений,pnpmприложения не возвращаются к скрипту по умолчаниюstart. См . раздел "Настройка выполнения приложения Databricks с помощьюapp.yaml".
Для проектов в рабочей области pnpm (в которых присутствует файл pnpm-workspace.yaml) некоторые команды app.yaml рекурсивно запускают pnpm. Например, этап сборки или запуска может запускать pnpm -r run build. Эти команды должны вызывать corepack pnpm вместо pnpm, чтобы вложенные команды корректно разрешались.
Избегайте конфликтов версий
Чтобы избежать конфликтов версий, следуйте приведенным ниже рекомендациям.
- Для приложений на основе
pip, переопределение предварительно установленных пакетов может привести к проблемам совместимости, если указанная версия значительно отличается от предварительно установленной. - Всегда тестируйте приложение, чтобы убедиться, что изменения версии пакета не содержат ошибок.
- Фиксирование явных версий в
requirements.txtпомогает обеспечивать согласованное поведение приложений во всех развертываниях. - При использовании
uvнеобходимо добавить файлuv.lock, чтобы обеспечить полностью воспроизводимые установки в различных контекстах развертывания.
Установка зависимостей и управление ими
Azure Databricks устанавливает библиотеки, определенные в 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".
Использование репозиториев пакетов по умолчанию на уровне рабочей области
Это важно
Эта функция доступна в бета-версии. Чтобы использовать его, администратор рабочей области должен включить настройку репозитория рабочей области для приложений Databricks на странице "Предварительные версии ". См. статью "Управление предварительными версиями Azure Databricks".
Если администратор рабочей области настраивает репозитории пакетов по умолчанию для рабочей области, приложения в этой рабочей области устанавливают Python и Node.js пакеты из репозиториев, настроенных для рабочей области, вместо общедоступных реестров PyPI и npm. Это позволяет разработчикам приложений автоматически наследовать настройки корпоративного репозитория пакетов без дублирования конфигурации в каждом приложении, при этом сохраняя возможность переопределения настроек для отдельных приложений.
Сведения о настройке этих параметров уровня рабочей области см. в разделе "Настройка репозиториев пакетов по умолчанию".
пакеты Python
На этапе установки пакета Databricks Apps наследует параметры рабочей области для следующих переменных среды:
PIP_INDEX_URLPIP_EXTRA_INDEX_URLPIP_CERTUV_INDEX_URLUV_EXTRA_INDEX_URLSSL_CERT_FILE
Конфигурация для конкретного приложения имеет приоритет над значениями по умолчанию рабочей области. Если в файле app.yaml вашего приложения заданы какие-либо из предыдущих переменных среды (кроме параметров сертификата, указанных ниже), значения в app.yaml переопределяют параметры рабочей области для этого приложения.
Замечание
Параметры сертификатов PIP_CERT и SSL_CERT_FILE всегда используют значения, заданные для рабочей области, и их нельзя переопределить в app.yaml.
Предупреждение
Протестируйте свои приложения после того, как администратор рабочего пространства включит режим предварительного просмотра, и задайте PIP_INDEX_URL в app.yaml, если нужно продолжать установку из другого индекса.
пакеты Node.js
Когда администратор рабочей области настраивает реестр npm по умолчанию, Databricks Apps записывает конфигурацию реестра рабочих областей в файл приложения .npmrc во время развертывания. Это позволяет приложениям устанавливать пакеты Node.js, включая частные пакеты, из реестра, настроенного в рабочей области, без каждого приложения, сохраняющего собственный URL-адрес реестра или маркер проверки подлинности.
Чтобы использовать другой реестр для конкретного приложения, задайте NPMRC переменную среды в файле приложения app.yaml , чтобы ссылаться на собственную конфигурацию npm. Конфигурация для конкретного приложения имеет приоритет над значениями по умолчанию рабочей области.
Установка файлов колес из томов каталога Unity
Чтобы установить пакеты Python из wheel-файлов, хранящихся в репозиториях каталога Unity, выполните следующие действия.
- Добавьте том каталога Unity в качестве ресурса в приложение. См . том каталога Unity.
- Ссылка на полный путь к файлу колесика непосредственно в вашей
requirements.txt:
/Volumes/<catalog>/<schema>/<volume>/my_package-1.0.0-py3-none-any.whl
Замечание
Ссылки на переменные среды не поддерживаются в requirements.txt. Необходимо жестко закодить полный путь к файлу колесика.
Чтобы повысить безопасность при доступе к внешним репозиториям пакетов, используйте бессерверные элементы управления исходящего трафика, чтобы ограничить доступ к общедоступным репозиториям и настроить частные сети. См . статью "Настройка сети для приложений Databricks".