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


Шаблоны пакетов активов Databricks

В этой статье описывается синтаксис шаблонов пакета ресурсов Databricks, которые работают с Databricks CLI версии 0.218.0 и выше. Пакеты обеспечивают программное управление рабочими процессами Azure Databricks. См. сведения о пакетах ресурсов Databricks?

Шаблоны пакетов позволяют пользователям создавать пакеты в согласованном, повторяемом режиме, устанавливая структуры папок, шаги сборки и задачи, тесты и другие атрибуты инфраструктуры как кода (IaC) DevOps, распространенные в конвейере развертывания среды разработки.

Например, если вы регулярно выполняете задания Databricks, для которых требуются пользовательские пакеты с длительным шагом компиляции при установке, можно ускорить цикл разработки, создав шаблон пакета, поддерживающий пользовательские среды контейнеров.

Шаблоны пакетов определяют структуру каталогов создаваемого пакета и включают databricks.yml.tmpl шаблон файла конфигурации, а также databricks_template_schema.json файл, содержащий переменные пользовательского запроса.

Создание пакета на основе шаблона

В этом разделе описывается, как использовать шаблон пакета, шаблон пакета Azure Databricks по умолчанию или пользовательский шаблон пакета.

Использование шаблона пакета по умолчанию

Чтобы использовать шаблон пакета Azure Databricks по умолчанию для создания пакета, используйте команду CLI bundle init Databricks, указав имя используемого шаблона по умолчанию. Например, следующая команда создает пакет с помощью шаблона пакета Python по умолчанию:

databricks bundle init default-python

Если шаблон по умолчанию не указан, bundle init команда представляет набор доступных шаблонов, из которых можно выбрать.

Azure Databricks предоставляет следующие шаблоны пакетов по умолчанию:

Template Description
default-python Шаблон для использования Python с Databricks. Этот шаблон создает пакет с конвейером заданий и динамических таблиц Delta. См. статью по умолчанию.
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 в корневом каталоге проекта. Этот файл содержит переменные, которые пользователи предоставляют входные значения при создании пакета с помощью bundle initшаблона. Этот файл соответствует спецификации схемы JSON.

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 это не указано, то запросы пользователей отображаются в том порядке, в котором они указаны в схеме.
  • 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.

После создания тестового пакета сообщение об успешном выполнении из файла схемы выводится. Если просмотреть содержимое 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.