Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Приложения Databricks позволяют создавать безопасные данные и приложения ИИ на платформе Databricks, которую можно легко предоставлять пользователям. Вы можете управлять развертываниями приложений с помощью пакетов ресурсов Databricks. Дополнительные сведения о приложениях и пакетах см. в разделе "Приложения Databricks " и "Что такое пакеты ресурсов Databricks?".
В этой статье описывается разработка приложения Databricks локально, а затем настройка пакета для управления развертываниями приложения в рабочей области Databricks с помощью пакетов ресурсов Databricks.
Подсказка
Чтобы инициализировать пример бандла с приложением Streamlit, используйте шаблон бандла streamlit-app с помощью команды bundle init.
databricks bundle init https://github.com/databricks/bundle-examples --template-dir contrib/templates/streamlit-app
Требования
- Рабочая область Databricks и локальная среда разработки должны соответствовать требованиям для приложений Databricks. См. статью "Настройка рабочей области Databricks Apps" и среды разработки.
- Databricks CLI версии 0.250.0 или более поздней. Чтобы проверить установленную версию интерфейса командной строки Databricks, выполните команду
databricks -v. Чтобы установить интерфейс командной строки Databricks, см. статью "Установка или обновление интерфейса командной строки Databricks".
Создание приложения локально
Сначала создайте приложение Databricks. Приложения разрабатываются в Python с помощью популярных платформ, таких как Dash или Gradio. Вы можете создать приложение Databricks локально, создать его в рабочей области Databricks, а затем синхронизировать файлы с локальным компьютером или получить пример приложения Databricks из GitHub.
Чтобы создать приложение с нуля:
Следуйте краткому руководству по началу работы для платформы:
Добавьте файл
app.yamlв корневой каталог вашего проекта, чтобы задать параметры для запуска вашего основного Python-приложения. Рассмотрим пример.Для приложения Streamlit:
command: ['streamlit', 'run', 'app.py']Или для приложения Dash:
command: ['python', 'app.py']
Чтобы создать приложение в рабочей области и синхронизировать его локально:
Выполните действия, описанные в статье "Начало работы с Databricks Apps" , чтобы создать приложение в пользовательском интерфейсе.
Создайте локальный каталог для приложения и перейдите в него:
mkdir hello-world-app cd hello-world-appСинхронизация файлов приложения локально. Вы можете скопировать
databricks workspace export-dirкоманду на странице установки приложения в пользовательском интерфейсе рабочей области и запустить ее в командной строке. Рассмотрим пример.databricks workspace export-dir /Workspace/Users/someone@example.com/databricks_apps/hello-world_2025_05_09-17_43/hello-world-app .Это загружает файлы приложения из каталога рабочей области в каталог
hello-world-appна вашем локальном компьютере.
Чтобы получить пример приложения Databricks из GitHub, выполните приведенные ниже действия.
Клонируйте репозиторий GitHub шаблонов приложений Databricks:
git clone https://github.com/databricks/app-templatesВыберите одно из примеров приложений в качестве простого проекта приложения.
Добавление существующего приложения в существующий пакет
Если у вас есть приложение Databricks в рабочей области и существующий пакет, в который вы хотите добавить приложение, можно использовать databricks bundle generate app команду. Эта команда создает файл конфигурации для приложения и загружает все файлы исходного кода для приложения и добавляет их в пакет. Рассмотрим пример.
databricks bundle generate app --existing-app-name hello-world-app
После создания конфигурации приложения в пакете используйте databricks bundle bind команду, чтобы сохранить приложение в рабочей области и выполнить синхронизацию пакета.
Для получения дополнительной информации о databricks bundle generate и databricks bundle bind см. группу команд bundle.
Разработка и отладка приложения локально
Затем продолжайте разработку приложения локально. Запустите и отладите приложение с помощью databricks apps run-local команды. Эта команда запускает прокси приложения, который используется для прокси-запросов к самому приложению и внедряет необходимые заголовки, связанные с приложением Databricks.
Чтобы установить все зависимости, подготовить виртуальную среду и запустить приложение и отладчик, используйте команду
run-localс параметрами--prepare-environmentи--debug.databricks apps run-local --prepare-environment --debugЭта команда используется
uvдля подготовки виртуальной среды, а отладчик основан наdebugpy.Перейдите на
http://localhost:8001, чтобы просмотреть ваше приложение.Установите точки остановки для отладки своего приложения. В Visual Studio Code установите отладчик Python, затем выберите Запустить>отладку и Удаленное подключение к процессу отладки.
Прокси-сервер запускается через порт 5678, но его можно настроить с помощью
--portпараметра.
Развертывание приложения в рабочей области
Когда вы будете готовы развернуть приложение в рабочей области, добавьте конфигурацию пакета, которая создает приложение, а затем разверните пакет.
Создайте файл
databricks.ymlв корне проекта приложения. Интерфейс командной строки Databricks определяет папку с файломdatabricks.ymlв корневом каталоге как bандл, что позволяет использовать команды databricks bundle.Скопируйте и вставьте следующий YAML в
databricks.ymlфайл, заменив значения-заполнители для рабочего пространства и имени пользователя на свои.bundle: name: hello_world_bundle resources: apps: hello_world_app: name: 'hello-world-app' source_code_path: . # This assumes the app source code is at the root of the project. description: 'A Databricks app' targets: dev: mode: development default: true workspace: host: https://myworkspace.cloud.databricks.com prod: mode: production workspace: host: https://myworkspace.cloud.databricks.com root_path: /Workspace/Users/someone@example.com/.bundle/${bundle.name}/${bundle.target} permissions: - user_name: someone@example.com level: CAN_MANAGEПроверьте, а затем разверните пакет. По умолчанию это создает приложение и пакет в целевом
devобъекте в рабочей области.databricks bundle validate databricks bundle deployРазвертывание пакета не приводит к автоматическому развертыванию приложения на вычислительном ресурсе. Чтобы развернуть приложение, используйте пользовательский интерфейс (на странице приложения в рабочей области Databricks) или интерфейс командной строки Databricks (
databricks apps deploy). См. раздел "Развертывание приложения Databricks".bundle summaryИспользуйте команду для получения сведений о развернутом приложении:databricks bundle summaryName: hello_world_bundle Target: dev Workspace: Host: https://myworkspace.cloud.databricks.com User: someone@example.com Path: /Workspace/Users/someone@example.com/.bundle/hello_world_bundle/dev Resources: Apps: hello_world_app: Name: hello-world-app URL: https://myworkspace.cloud.databricks.com/apps/hello-world-app?o=8498204313176880
Разрабатывать, тестировать, итерациировать
Продолжайте вносить изменения в приложение локально, а затем повторно разверните пакет, чтобы обновить приложение в рабочей области. Чтобы запустить приложение в рабочей области, запустите приложение в пакете, указав ключ ресурса для приложения в команде:
databricks bundle run hello_world_app
Развертывание в рабочей среде
Databricks рекомендует использовать учетную запись службы для проверки подлинности в производственном окружении. Когда вы будете готовы ввести приложение в эксплуатацию, обновите конфигурацию пакета, чтобы использовать сервисный принципал, а затем разверните пакет в целевой рабочей области в производственной среде. Для получения информации о служебных субъектах см. раздел "Служебные субъекты для CI/CD".
Изменение пакета для использования сервисного принципала
Перед развертыванием в рабочей среде настройте разрешение в пакете, которое предоставляет права субъекту-службе. Вы можете настроить предоставление при создании приложения или при запуске пакета.
Чтобы предоставить учетной записи службы разрешение при создании приложения в процессе развертывания пакета, измените параметр databricks.yml пакета, чтобы установить разрешение для приложения. Используйте замену пакета для назначения учетной записи службы:
bundle:
name: hello_world_bundle
resources:
apps:
hello_world_app:
name: 'hello-world-app'
source_code_path: . # This assumes the app source code is at the root of the project.
description: 'A Databricks app'
schemas:
my_schema:
name: my_schema
grants:
# highlight-next-line
- principal: '${resources.apps.hello_world_app.service_principal_client_id}'
privileges:
- CREATE_TABLE
catalog_name: main
targets:
dev:
mode: development
default: true
workspace:
host: https://myworkspace.cloud.databricks.com
prod:
mode: production
workspace:
host: https://myworkspace.cloud.databricks.com
root_path: /Workspace/Users/someone@example.com/.bundle/${bundle.name}/${bundle.target}
permissions:
- user_name: someone@example.com
level: CAN_MANAGE
Кроме того, определите задание в пакете, которое настраивает предоставление при запуске пакета:
Добавьте записную книжку
grant_notebook.ipynbсо следующим содержимым в ячейку. Замените<schema-name>именем пользователя администратора.app_service_principal = dbutils.widgets.get("app_service_principal") spark.sql(f"GRANT ALL PRIVILEGES ON SCHEMA <schema-name> TO `{app_service_principal}`")Создайте задание в пакете
databricks.yml, чтобы запустить блокнот, который предоставляет разрешения субъекту-службе. Используйте подстановки пакетов, чтобы назначить значение субъекта-службы:bundle: name: hello_world_bundle resources: apps: hello_world_app: name: 'hello-world-app' source_code_path: . # This assumes the app source code is at the root of the project. description: 'A Databricks app' jobs: grant_job: name: 'grant-job' parameters: - name: app_service_principal # highlight-next-line default: '${resources.apps.hello_world_app.service_principal_client_id}' tasks: - task_key: setup_grants notebook_task: notebook_path: ./grant_notebook.ipynb targets: dev: mode: development default: true workspace: host: https://myworkspace.cloud.databricks.com prod: mode: production workspace: host: https://myworkspace.cloud.databricks.com root_path: /Workspace/Users/someone@example.com/.bundle/${bundle.name}/${bundle.target} permissions: - user_name: someone@example.com level: CAN_MANAGE
Развертывание обновленного пакета
Теперь разверните пакет в рабочей рабочей области и запустите приложение:
databricks bundle deploy -t prod
databricks bundle run grant_job -t prod # (Optional) Run this if the grant is configured with a job
databricks bundle run hello_world_app -t prod