Шаблоны проектов пакета активов Databricks
В этой статье описывается синтаксис шаблонов пакета ресурсов Databricks. Пакеты обеспечивают программное управление рабочими процессами Azure Databricks. См. сведения о пакетах ресурсов Databricks?
Шаблоны пакетов позволяют пользователям создавать пакеты в согласованном, повторяемом режиме, устанавливая структуры папок, шаги сборки и задачи, тесты и другие атрибуты инфраструктуры как кода (IaC) DevOps, распространенные в конвейере развертывания среды разработки.
Например, если вы регулярно выполняете задания Databricks, для которых требуются пользовательские пакеты с длительным шагом компиляции при установке, можно ускорить цикл разработки, создав шаблон пакета, поддерживающий пользовательские среды контейнеров.
Шаблоны пакетов определяют структуру каталогов создаваемого пакета и включают databricks.yml.tmpl
шаблон файла конфигурации, а также databricks_template_schema.json
файл, содержащий переменные пользовательского запроса.
Использование шаблона пакета по умолчанию
Чтобы использовать шаблон пакета Azure Databricks по умолчанию для создания пакета, используйте команду CLIbundle init
Databricks, указав имя используемого шаблона по умолчанию. Например, следующая команда создает пакет с помощью шаблона пакета Python по умолчанию:
databricks bundle init default-python
Если шаблон по умолчанию не указан, команда bundle init
представляет set доступных шаблонов, из которых можно выбрать.
Azure Databricks предоставляет следующие шаблоны пакетов по умолчанию:
Template | Description |
---|---|
default-python |
Шаблон для использования Python с Databricks. Этот шаблон создает пакет с заданием и конвейером Delta Live Tables. См. статью по умолчанию. |
default-sql |
Шаблон для использования SQL с Databricks. Этот шаблон содержит файл конфигурации, определяющий задание, которое выполняет SQL-запросы в хранилище SQL. См . инструкции по умолчанию-sql. |
dbt-sql |
Шаблон, который использует dbt-core для локальной разработки и пакетов для развертывания. Этот шаблон содержит конфигурацию, которая определяет задание с задачей dbt, а также файл конфигурации, определяющий профили субд для развернутых заданий dbt. См . dbt-sql. |
mlops-stacks |
Расширенный шаблон полного стека для запуска новых проектов MLOps Stacks. См. раздел mlops-stacks и наборы ресурсов Databricks для MLOps Stacks. |
Использование пользовательского шаблона пакета
Чтобы использовать шаблон пакета, отличный от шаблонов пакетов Azure Databricks по умолчанию, передайте локальный путь или удаленный URL-адрес шаблона команде Databricks CLIbundle init
.
Например, следующая команда использует dab-container-template
шаблон, созданный в руководстве по шаблону пользовательского пакета:
databricks bundle init /projects/my-custom-bundle-templates/dab-container-template
Создание шаблона пользовательского пакета
Шаблоны пакетов используют синтаксис шаблонов пакетов Go. См. документацию по шаблону пакета Go.
Как минимум, проект шаблона пакета должен иметь следующее:
-
databricks_template_schema.json
Файл в корневом каталоге проекта, который определяет одну переменную пользовательского запроса для имени проекта пакета. -
databricks.yml.tmpl
Файл, расположенный в папкеtemplate
, которая определяет конфигурацию для всех пакетов, созданных с помощью шаблона.databricks.yml.tmpl
Если файл ссылается на любые дополнительные*.yml.tmpl
шаблоны конфигурации, укажите расположение этих шаблонов в сопоставленииinclude
.
При необходимости можно добавить вложенные папки и файлы template
в папку, которая требуется зеркально отображаться в пакетах, созданных шаблоном.
Определение переменных запроса пользователя
Первым шагом в создании базового шаблона пакета является создание папки проекта шаблона и файла с именем databricks_template_schema.json
в корневом каталоге проекта. Этот файл содержит переменные, для которых пользователи вводят данные values при использовании шаблона для создания пакета с помощью bundle init
. Формат этого файла соответствует спецификации JSON Schema.
mkdir basic-bundle-template
touch basic-bundle-template/databricks_template_schema.json
Добавьте следующий код в databricks_template_schema.json
файл и сохраните файл:
{
"properties": {
"project_name": {
"type": "string",
"default": "basic_bundle",
"description": "What is the name of the bundle you want to create?",
"order": 1
}
},
"success_message": "\nYour bundle '{{.project_name}}' has been created."
}
В этом файле:
-
project_name
— единственное имя входной переменной. -
default
является необязательным значением по умолчанию, если значение не предоставляется пользователем в--config-file
рамкахbundle init
команды или переопределяется пользователем в командной строке. -
description
— это запрос пользователя, связанный с входной переменной, если значение не предоставляется пользователем в--config-file
рамкахbundle init
команды. -
order
— это необязательный порядок, в котором отображается каждая пользовательская строка, если значение не предоставляется пользователем в--config-file
рамкахbundle init
команды. Еслиorder
не указан, то запросы пользователей отображаются в порядке, в котором они перечислены в schema. -
success_message
— необязательное сообщение, отображаемое при успешном создании проекта.
Создание структуры папок
Затем создайте требуемую template
папку и создайте структуру папок в ней. Эта структура будет зеркально отображаться пакетами, созданными с помощью этого шаблона. Кроме того, поместите все файлы, которые вы хотите включить в эти папки. Этот базовый шаблон пакета хранит файлы в папке src
и включает одну простую записную книжку.
mkdir -p basic-bundle-template/template/src
touch basic-bundle-template/template/src/simple_notebook.ipynb
Добавьте в файл следующий simple_notebook.ipynb
код:
print("Hello World!")
Заполнение файлов шаблонов конфигурации
Теперь создайте необходимый databricks.yml.tmpl
файл в папке template
:
touch basic-bundle-template/template/databricks.yml.tmpl
Заполните этот файл базовым шаблоном конфигурации YAML. Этот шаблон конфигурации устанавливает имя пакета, одно задание с помощью указанного файла записной книжки и две целевые среды для пакетов, созданных с помощью этого шаблона. Он также использует преимущества подстановок пакетов, что настоятельно рекомендуется. См . подстановки пакетов.
# This is the configuration for the Databricks Asset Bundle {{.project_name}}.
bundle:
name: {{.project_name}}
# The main job for {{.project_name}}
resources:
jobs:
{{.project_name}}_job:
name: {{.project_name}}_job
tasks:
- task_key: notebook_task
job_cluster_key: job_cluster
notebook_task:
notebook_path: ../src/simple_notebook.ipynb
job_clusters:
- job_cluster_key: job_cluster
new_cluster:
node_type_id: i3.xlarge
spark_version: 13.3.x-scala2.12
targets:
# The deployment targets. See https://docs.databricks.com/en/dev-tools/bundles/deployment-modes.html
dev:
mode: development
default: true
workspace:
host: {{workspace_host}}
prod:
mode: production
workspace:
host: {{workspace_host}}
root_path: /Shared/.bundle/prod/${bundle.name}
{{- if not is_service_principal}}
run_as:
# This runs as {{user_name}} in production. Alternatively,
# a service principal could be used here using service_principal_name
user_name: {{user_name}}
{{end -}}
Тестирование шаблона пакета
Наконец, протестируйте шаблон. Создайте папку проекта пакета, а затем используйте интерфейс командной строки Databricks для инициализации нового пакета с помощью шаблона:
mkdir my-test-bundle
cd my-test-bundle
databricks bundle init ../basic-bundle-template
Для запроса What is your bundle project name?
введите my_test_bundle
.
После создания тестового пакета сообщение об успешном выполнении из файла schema выводится. Если просмотреть содержимое my-test-bundle
папки, вы увидите следующее:
my-test-bundle
├── databricks.yml
└── src
└── simple_notebook.ipynb
Теперь databricks.yml-файл настраивается:
# This is the configuration for the Databricks Asset Bundle my-test-bundle.
bundle:
name: my-test-bundle
# The main job for my-test-bundle
resources:
jobs:
my-test-bundle_job:
name: my-test-bundle_job
tasks:
- task_key: notebook_task
job_cluster_key: job_cluster
notebook_task:
notebook_path: ../src/simple_notebook.ipynb
job_clusters:
- job_cluster_key: job_cluster
new_cluster:
node_type_id: i3.xlarge
spark_version: 13.3.x-scala2.12
targets:
# The 'dev' target, used for development purposes. See [_](https://docs.databricks.com/en/dev-tools/bundles/deployment-modes.html#development-mode)
dev:
mode: development
default: true
workspace:
host: https://my-host.cloud.databricks.com
# The 'prod' target, used for production deployment. See [_](https://docs.databricks.com/en/dev-tools/bundles/deployment-modes.html#production-mode)
prod:
mode: production
workspace:
host: https://my-host.cloud.databricks.com
root_path: /Shared/.bundle/prod/${bundle.name}
run_as:
# This runs as someone@example.com in production. Alternatively,
# a service principal could be used here using service_principal_name
user_name: someone@example.com
Общий доступ к шаблону
Если вы хотите предоставить общий доступ к этому шаблону пакета другим пользователям, вы можете сохранить его в элементе управления версиями с любым поставщиком, поддерживающим Git, и к которым у пользователей есть доступ. Чтобы выполнить bundle init
команду с URL-адресом Git, убедитесь, что databricks_template_schema.json
файл находится в корневом расположении относительно этого URL-адреса Git.
Совет
Файл можно поместить databricks_template_schema.json
в другую папку относительно корневого каталога пакета. Затем можно использовать bundle init
параметр команды --template-dir
для ссылки на эту папку, содержащую databricks_template_schema.json
файл.
Следующие шаги
- Просмотрите дополнительные шаблоны, созданные и поддерживаемые Databricks. См. репозиторий примеров пакетов в GitHub.
- Сведения об использовании стеков MLOps с шаблонами пакетов ресурсов Databricks см. в разделе "Наборы ресурсов Databricks" для стеков MLOps.
- Узнайте больше о шаблоне пакета Go. См. документацию по шаблону пакета Go.