Ресурсы пакетов Databricks.
Пакеты ресурсов Databricks позволяют указать информацию о ресурсах Azure Databricks, которые используются в рамках пакета, при помощи сопоставления resources
в конфигурации пакета. См. сопоставление ресурсов и справку по ключам ресурсов.
В этой статье описаны поддерживаемые типы ресурсов для пакетов и приведены подробные сведения и пример для каждого поддерживаемого типа. Дополнительные примеры см. в примерах конфигурации пакета .
Совет
Чтобы создать YAML для любого существующего ресурса, используйте команду databricks bundle generate
. См. создание файла конфигурации пакета.
поддерживаемые ресурсы
В следующей таблице перечислены поддерживаемые типы ресурсов для пакетов. Некоторые ресурсы можно создать, определив их в пакете и развернув пакет, и некоторые ресурсы поддерживают только ссылку на существующий ресурс для включения в пакет.
Ресурсы определяются с помощью соответствующего REST API Databricks и полезной нагрузки запроса на создание операции объекта, где выраженные в виде YAML поддерживаемые поля объекта являются поддерживаемыми свойствами ресурса. Ссылки на документацию по полезной нагрузке каждого ресурса приведены в таблице.
Совет
Команда databricks bundle validate
возвращает предупреждения, если неизвестные свойства ресурсов находятся в файлах конфигурации пакета.
Ресурс | Создание поддержки | Соответствующий объект REST API |
---|---|---|
приложения | ✓ | объект приложения |
кластер | ✓ | объект кластера |
панели мониторинга | объект панели мониторинга | |
эксперимент | ✓ | Экспериментальный объект |
работа | ✓ | объект работы |
Модель (устаревшая версия) | ✓ | Модель (устаревшая версия) объекта |
служебная_конечная_точка_модели | ✓ | объект конечной точки обслуживания модели |
пайплайн | ✓ | объект конвейера |
монитор качества | ✓ | объект контроля качества |
registered_model (каталог Unity) | ✓ | зарегистрированный объект модели |
схема (каталог Unity) | ✓ | объект схемы |
объём данных (Unity Catalog) | ✓ | объект тома |
приложение
Ресурс приложения определяет приложение Databricks . Сведения о приложениях Databricks см. в разделе Что такое приложения Databricks?.
Совет
Вы можете инициализировать пакет с приложением Streamlit Databricks с помощью следующей команды:
databricks bundle init https://github.com/databricks/bundle-examples --template-dir contrib/templates/streamlit-app
Чтобы добавить приложение, укажите поля объектов , определяющие приложение, а также следующие:
-
source_code_path
—./app
локальный путь исходного кода приложения Databricks. Это поле является обязательным. -
config
— команды конфигурации приложения и переменные среды. Это можно использовать для указания различных целевых объектов развертывания приложений.
Пример
В следующем примере создается приложение с именем my_app
, которое управляет заданием, созданным пакетом:
resources:
jobs:
# Define a job in the bundle
hello_world:
name: hello_world
tasks:
- task_key: task
spark_python_task:
python_file: ../src/main.py
environment_key: default
environments:
- environment_key: default
spec:
client: '1'
# Define an app that manages the job in the bundle
apps:
job_manager:
name: 'job_manager_app'
description: 'An app which manages a job created by this bundle'
# The location of the source code for the app
source_code_path: ../src/app
# The configuration for running the app
config:
command:
- flask
- --app
- app
- run
- --debug
env:
- name: JOB_ID
value: ${resources.jobs.hello_world.id}
# The resources in the bundle which this app has access to. This binds the resource in the app with the DABs resource.
resources:
- name: 'app-job'
job:
id: ${resources.jobs.hello_world.id}
permission: 'CAN_MANAGE_RUN'
Полный пакет примеров приложения Databricks см. в репозитории GitHub.
кластер
Ресурс кластера определяет универсальный кластер .
Пример
В следующем примере создается кластер с именем my_cluster
, который затем используется для запуска ноутбука в my_job
.
bundle:
name: clusters
resources:
clusters:
my_cluster:
num_workers: 2
node_type_id: 'i3.xlarge'
autoscale:
min_workers: 2
max_workers: 7
spark_version: '13.3.x-scala2.12'
spark_conf:
'spark.executor.memory': '2g'
jobs:
my_job:
tasks:
- task_key: test_task
notebook_task:
notebook_path: './src/my_notebook.py'
панель мониторинга
Ресурс панели мониторинга позволяет управлять панелями мониторинга AI/BI в пакете. Сведения о панелях мониторинга AI/BI см. в панелях мониторинга.
Пример
Пример ниже демонстрирует и развертывает образец панели мониторинга NYC Taxi Trip Analysis в рабочей области Databricks.
resources:
dashboards:
nyc_taxi_trip_analysis:
display_name: 'NYC Taxi Trip Analysis'
file_path: ../src/nyc_taxi_trip_analysis.lvdash.json
warehouse_id: ${var.warehouse_id}
Если вы используете пользовательский интерфейс для изменения панели мониторинга, изменения, внесенные с помощью пользовательского интерфейса, не применяются к JSON-файлу панели мониторинга в локальном пакете, если вы явно не обновите его с помощью bundle generate
. Вы можете использовать параметр --watch
для непрерывного опроса и получения изменений на панели мониторинга. См. создание файла конфигурации пакета.
Кроме того, при попытке развернуть пакет, содержащий JSON-файл панели мониторинга, отличный от файла JSON в удаленной рабочей области, возникнет ошибка. Чтобы выполнить развертывание и перезаписать панель мониторинга в удаленной рабочей области с локальной версией, используйте параметр --force
. См. раздел Развертывание пакета.
эксперимент
Ресурс эксперимента позволяет определить эксперименты MLflow в составе пакета. Сведения об экспериментах MLflow см. в разделе Упорядочить тренировочные запуски с помощью экспериментов MLflow.
Пример
В следующем примере определяется эксперимент, который могут просматривать все пользователи:
resources:
experiments:
experiment:
name: my_ml_experiment
permissions:
- level: CAN_READ
group_name: users
description: MLflow experiment used to track runs
задание
Ресурс задания позволяет вам определить работы и их соответствующие задачи в вашем пакете. Дополнительные сведения о заданиях см. в разделе "Обзор оркестрации в Databricks". Руководство по созданию задания с помощью шаблона наборов ресурсов Databricks см. в статье Разработка задания в Azure Databricks с помощью пакетов ресурсов Databricks.
Пример
В следующем примере описывается задание с ключом ресурса hello-job
с одной задачей в блокноте.
resources:
jobs:
hello-job:
name: hello-job
tasks:
- task_key: hello-task
notebook_task:
notebook_path: ./hello.py
Сведения об определении задач и переопределении параметров заданий см. в разделе "Добавление задач в задания" в пакетах ресурсов Databricks, "Переопределение параметров задач" в пакетах ресурсов Databricksи "Переопределение параметров кластера" в пакетах ресурсов Databricks.
модель (устаревшая версия)
Ресурс модели позволяет определять устаревшие модели в пакетах. Databricks рекомендует вместо этого использовать зарегистрированные модели в каталоге Unity.
конечная_точка_обслуживания_моделей
Ресурс model_serving_endpoint позволяет определить модели обслуживания конечных точек. См. раздел Управление конечными точками обслуживания моделей.
Пример
В следующем примере определяется конечная точка обслуживания модели каталога Unity:
resources:
model_serving_endpoints:
uc_model_serving_endpoint:
name: 'uc-model-endpoint'
config:
served_entities:
- entity_name: 'myCatalog.mySchema.my-ads-model'
entity_version: '10'
workload_size: 'Small'
scale_to_zero_enabled: 'true'
traffic_config:
routes:
- served_model_name: 'my-ads-model-10'
traffic_percentage: '100'
tags:
- key: 'team'
value: 'data science'
quality_monitor (Unity Catalog)
Ресурс quality_monitor позволяет определить монитор таблицы каталога Unity. Сведения о мониторах см. в разделе Мониторинг качества модели и работоспособности конечных точек.
Пример
В следующем примере определяется монитор качества:
resources:
quality_monitors:
my_quality_monitor:
table_name: dev.mlops_schema.predictions
output_schema_name: ${bundle.target}.mlops_schema
assets_dir: /Users/${workspace.current_user.userName}/databricks_lakehouse_monitoring
inference_log:
granularities: [1 day]
model_id_col: model_id
prediction_col: prediction
label_col: price
problem_type: PROBLEM_TYPE_REGRESSION
timestamp_col: timestamp
schedule:
quartz_cron_expression: 0 0 8 * * ? # Run Every day at 8am
timezone_id: UTC
зарегистрированная модель (каталог Unity)
Ресурс зарегистрированной модели позволяет определять модели в каталоге Unity. Сведения о зарегистрированных моделях в каталоге Unity смотрите в статье Управление жизненным циклом модели в каталоге Unity.
Пример
В следующем примере определяется зарегистрированная модель в каталоге Unity:
resources:
registered_models:
model:
name: my_model
catalog_name: ${bundle.target}
schema_name: mlops_schema
comment: Registered model in Unity Catalog for ${bundle.target} deployment target
grants:
- privileges:
- EXECUTE
principal: account users
конвейер
Ресурс конвейера позволяет создавать конвейеры DLT . Сведения о конвейерах см. в разделе Что такое DLT?. Руководство по созданию конвейера с помощью шаблона наборов ресурсов Databricks см. в разделе Разработка конвейеров DLT с помощью пакетов ресурсов Databricks.
Пример
В следующем примере определяется конвейер с ключом ресурса hello-pipeline
:
resources:
pipelines:
hello-pipeline:
name: hello-pipeline
clusters:
- label: default
num_workers: 1
development: true
continuous: false
channel: CURRENT
edition: CORE
photon: false
libraries:
- notebook:
path: ./pipeline.py
схема (каталог Unity)
Тип ресурса схемы позволяет определять схемы каталога Unity для таблиц и других ресурсов в рабочих процессах и конвейерах, созданных в составе пакета. Схема, отличная от других типов ресурсов, имеет следующие ограничения:
- Владелец ресурса схемы всегда является пользователем развертывания и не может быть изменен. Если
run_as
указан в пакете, он будет игнорироваться операциями схемы. - Доступны только поля, поддерживаемые соответствующим объектом schemas create API для ресурса схемы. Например,
enable_predictive_optimization
не поддерживается, так как он доступен только в API обновления.
Примеры
В следующем примере определяется конвейер с ключом ресурса my_pipeline
, который создает схему каталога Unity с ключом my_schema
в качестве целевого объекта:
resources:
pipelines:
my_pipeline:
name: test-pipeline-{{.unique_id}}
libraries:
- notebook:
path: ./nb.sql
development: true
catalog: main
target: ${resources.schemas.my_schema.id}
schemas:
my_schema:
name: test-schema-{{.unique_id}}
catalog_name: main
comment: This schema was created by DABs.
Сопоставление грантов верхнего уровня не поддерживается пакетами Databricks Asset Bundles, поэтому, если вы хотите установить гранты для схемы, определите гранты для схемы в сопоставлении schemas
. Для получения дополнительной информации о правах доступа см. раздел Показать, предоставить и отозвать привилегии.
В следующем примере определяется схема каталога Unity с грантами:
resources:
schemas:
my_schema:
name: test-schema
grants:
- principal: users
privileges:
- SELECT
- principal: my_team
privileges:
- CAN_MANAGE
catalog_name: main
том (каталог Unity)
Тип ресурса тома позволяет определять и создавать тома каталога Unity в составе пакета. При развертывании пакета с определенным томом обратите внимание на следующее:
- Нельзя ссылаться на том в
artifact_path
пакета, пока он не будет существовать в рабочей области. Таким образом, если вы хотите использовать пакеты ресурсов Databricks для создания тома, сначала необходимо определить том в пакете, развернуть его для создания тома, а затем ссылаться на него вartifact_path
в последующих развертываниях. - Тома в наборе не получают префикс
dev_${workspace.current_user.short_name}
, если для целевого объекта развертывания настроенmode: development
. Однако этот префикс можно настроить вручную. См. пользовательские предустановки.
Пример
В следующем примере создается том каталога Unity с ключом my_volume
:
resources:
volumes:
my_volume:
catalog_name: main
name: my_volume
schema_name: my_schema
Для примера пакета, который выполняет задание по записи в файл в объёме Unity Catalog, см. репозиторий bundle-examples на GitHub.