Разработка задания в Azure Databricks с помощью пакетов ресурсов Databricks
Пакеты Databricks, также известные как просто пакеты, содержат артефакты, которые вы хотите развернуть, и настройки для ресурсов Azure Databricks, таких как задания, которые вы хотите выполнить, и позволяют программно проверять, развертывать и запускать их. См. раздел "Что такое пакеты ресурсов Databricks?".
В этой статье описывается, как создать пакет для программного управления заданием. См. раздел обзор оркестрации в системе Databricks. Пакет создается с использованием шаблона пакета по умолчанию для Python в Databricks Asset Bundles, который включает записную книжку и определение задания для её выполнения. Затем вы проверяете, развертываете и запускаете развернутую задачу в рабочей области Azure Databricks.
Совет
Если у вас есть задания, созданные с помощью пользовательского интерфейса заданий Azure Databricks Jobs или API, которые необходимо переместить в пакеты, необходимо определить их в файлах конфигурации пакета. Databricks рекомендует сначала создать пакет, выполнив приведенные ниже действия, а затем проверить, работает ли пакет. Затем в пакет можно добавить дополнительные определения заданий, записные книжки и другие источники. См. статью "Добавление существующего определения задания в пакет".
Требования
- Databricks CLI версии 0.218.0 или более поздней. Чтобы проверить установленную версию интерфейса командной строки Databricks, выполните команду
databricks -v
. Сведения об установке интерфейса командной строки Databricks см. в разделе Установка или обновление интерфейса командной строки Databricks. - Удаленная рабочая область Databricks должна иметь включенные файлы рабочей области. См. раздел " Что такое файлы рабочей области?".
Создание пакета с помощью шаблона проекта
Сначала создайте пакет с помощью шаблона Python для пакетов ресурсов Databricks по умолчанию. Дополнительные сведения о шаблонах пакетов см. в разделе "Шаблоны проектов пакета ресурсов Databricks".
Если вы хотите создать пакет с нуля, см . статью "Создание пакета вручную".
Шаг 1. Настройка проверки подлинности
На этом шаге вы настроили проверку подлинности между интерфейсом командной строки Databricks на компьютере разработки и рабочей областью Azure Databricks. В этой статье предполагается, что вы хотите использовать аутентификацию пользователя к машине (U2M) через OAuth и соответствующий профиль конфигурации Azure Databricks с именем DEFAULT
.
Примечание.
Проверка подлинности U2M подходит для выполнения этих действий в режиме реального времени. Для полностью автоматизированных рабочих процессов Databricks рекомендует вместо этого использовать аутентификацию OAuth машина-машина (M2M). Инструкции по настройке проверки подлинности M2M см. в разделе "Проверка подлинности".
Используйте Databricks CLI для локального инициирования управления токенами OAuth, выполнив следующую команду для каждой целевой рабочей области.
В следующей команде замените
на URL-адрес рабочей области Azure Databricks , например, . databricks auth login --host <workspace-url>
Интерфейс командной строки Databricks предлагает сохранить сведения, введенные в качестве профиля конфигурации Azure Databricks. Нажмите,
Enter
чтобы принять предлагаемое имя профиля, или введите имя нового или существующего профиля. Любой существующий профиль с тем же именем перезаписывается с введенными сведениями. Профили можно использовать для быстрого переключения контекста проверки подлинности в нескольких рабочих областях.Чтобы получить список существующих профилей в отдельном терминале или командной строке, используйте интерфейс командной строки Databricks для выполнения команды
databricks auth profiles
. Чтобы просмотреть существующие параметры конкретного профиля, выполните командуdatabricks auth env --profile <profile-name>
.В веб-браузере выполните инструкции на экране, чтобы войти в рабочую область Azure Databricks.
Чтобы просмотреть текущее значение маркера OAuth профиля и метку времени окончания срока действия маркера, выполните одну из следующих команд:
databricks auth token --host <workspace-url>
databricks auth token -p <profile-name>
databricks auth token --host <workspace-url> -p <profile-name>
Если у вас есть несколько профилей с одинаковым значением для
--host
, может потребоваться указать параметры--host
и-p
вместе, чтобы помочь Databricks CLI найти правильную информацию о маркере OAuth.
Шаг 2. Инициализация пакета
Инициализация пакета с помощью шаблона проекта пакета Python по умолчанию.
Используйте терминал или командную строку, чтобы переключиться в каталог на локальном компьютере разработки, который будет содержать созданный пакет шаблона.
Используйте командную строку интерфейса Databricks для выполнения команды
bundle init
.databricks bundle init
Для
Template to use
оставьте значениеdefault-python
по умолчанию, нажав клавишуEnter
.Для
Unique name for this project
оставьте значениеmy_project
по умолчанию или введите другое значение, а затем нажмитеEnter
. Это определяет имя корневого каталога для этого пакета. Этот корневой каталог создается в текущем рабочем каталоге.Для
Include a stub (sample) notebook
выберитеyes
и нажмите клавишуEnter
.Для
Include a stub (sample) DLT pipeline
выберитеno
и нажмите клавишуEnter
. Эта команда указывает интерфейсу командной строки Databricks не создавать пример конвейера DLT в составе вашего пакета.Для
Include a stub (sample) Python package
выберитеno
и нажмите клавишуEnter
. Это указывает Databricks CLI не добавлять в ваш пакет примеры файлов пакета Python wheel или связанные с ними инструкции по сборке.
Шаг 3. Изучение пакета
Чтобы просмотреть файлы, созданные шаблоном, переключитесь в корневой каталог созданного пакета. К файлам, интересующим особый интерес, относятся следующие:
-
databricks.yml
: этот файл указывает программное имя пакета, содержит ссылку на определение задания и задает параметры целевой рабочей области. -
resources/<project-name>_job.yml
: этот файл задает параметры задания, включая задачу записной книжки по умолчанию. -
src/notebook.ipynb
: этот файл представляет собой пример записной книжки, которая при запуске просто инициализирует RDD, содержащий числа от 1 до 10.
Для настройки заданий отображения в описании задания соответствуют данным запроса, выраженным в формате YAML, для операции создания задания, как это описано в разделе API POST /api/2.1/jobs/create в справочнике по REST API.
Совет
Вы можете определить, объединить и переопределить параметры для новых кластеров заданий в пакетах с помощью методов, описанных в разделе "Переопределение параметров кластера" в пакетах ресурсов Databricks.
Шаг 4. Проверка файла конфигурации пакета проекта
На этом шаге проверяется, действительна ли конфигурация пакета.
В корневом каталоге используйте интерфейс командной строки Databricks для выполнения
bundle validate
команды следующим образом:databricks bundle validate
Если возвращается сводка конфигурации пакета, проверка выполнена успешно. Если возвращаются какие-либо ошибки, исправьте ошибки и повторите этот шаг.
При внесении изменений в пакет после этого шага необходимо повторить этот шаг, чтобы проверить, действительна ли конфигурация пакета.
Шаг 5. Развертывание локального проекта в удаленной рабочей области
На этом шаге вы развернете локальную записную книжку в удаленной рабочей области Azure Databricks и создадите задание Azure Databricks в рабочей области.
В корневом каталоге пакета используйте интерфейс командной строки Databricks, чтобы выполнить команду
bundle deploy
следующим образом:databricks bundle deploy -t dev
Проверьте, развернута ли локальная записная книжка: на боковой панели рабочей области Azure Databricks щелкните "Рабочая область".
Перейдите в папку Users >
<your-username>
> .bundle ><project-name>
>dev > files > src. Записная книжка должна находиться в этой папке.Проверьте, создано ли задание: на боковой панели рабочей области Azure Databricks щелкните рабочие процессы.
На вкладке "Задания " щелкните [dev
<your-username>
]<project-name>_job
.Перейдите на вкладку "Задачи ". Должна быть одна задача: notebook_task.
При внесении изменений в пакет после этого шага необходимо повторить шаги 4–5, чтобы проверить, действительна ли конфигурация пакета, а затем повторно разверните проект.
Шаг 6. Запуск развернутого проекта
На этом шаге вы активируете выполнение задания Azure Databricks в рабочей области из командной строки.
В корневом каталоге используйте интерфейс командной строки Databricks для выполнения
bundle run
команды, как показано ниже, заменив<project-name>
имя проекта на шаге 2.databricks bundle run -t dev <project-name>_job
Скопируйте значение, которое отображается в терминале и вставьте это значение
Run URL
в веб-браузер, чтобы открыть рабочую область Azure Databricks. Просмотр и запуск задания, созданного с помощью пакета ресурсов DatabricksВ рабочей области Azure Databricks после успешного завершения задания и появления зеленой панели заголовка щелкните на задание, чтобы просмотреть результаты.
При внесении изменений в пакет после этого шага необходимо повторить шаги 4-6, чтобы проверить, действительна ли конфигурация пакета, повторно разверните проект и запустите повторно развернутый проект.
Шаг 7. Очистка
На этом шаге вы удалите развернутую записную книжку и задание из рабочей области.
В корневом каталоге используйте интерфейс командной строки Databricks для выполнения
bundle destroy
команды следующим образом:databricks bundle destroy -t dev
Подтвердите запрос на удаление задания: при появлении запроса на окончательное уничтожение ресурсов, введите
y
и нажмите клавишуEnter
.Подтвердите запрос на удаление записной книжки: при появлении запроса на окончательное уничтожение ранее развернутой папки и всех его файлов, введите
y
и нажмите клавишуEnter
.Если вы также хотите удалить пакет с компьютера разработки, теперь можно удалить локальный каталог из шага 2.
Добавление существующего определения задания в пакет
Для определения задания в файле конфигурации пакета можно использовать существующее задание. Чтобы получить существующее определение задания, его можно получить вручную с помощью пользовательского интерфейса или создать его программным способом с помощью интерфейса командной строки Databricks.
Сведения об определении задания в пакетах см. в разделе задания.
Получение существующего определения задания с помощью пользовательского интерфейса
Чтобы получить YAML представление существующего определения задачи из интерфейса пользователя рабочей области Azure Databricks:
На боковой панели рабочей области Azure Databricks щелкните "Рабочие процессы".
На вкладке "Задания" щелкните ссылку "Имя задания".
Рядом с кнопкой "Выполнить сейчас" нажмите кнопку "Кебаб", а затем нажмите кнопку "Переключиться на код" (YAML).
Добавьте скопированный YAML в файл
databricks.yml
вашего пакета или создайте файл конфигурации для вашего задания в каталогеresources
проекта пакета и укажите на него из файлаdatabricks.yml
. См. (/dev-tools/bundles/settings.md#resources).Скачайте и добавьте все файлы и записные книжки Python, на которые ссылается существующее задание, в источник проекта пакета. Обычно компоненты пакета находятся в каталоге
src
в пакете.Совет
Вы можете экспортировать существующую записную книжку из рабочей области Azure Databricks в
.ipynb
формат, выбрав в пользовательском интерфейсе записной книжки Azure Databricks пункт Файл > Экспорт > IPython Notebook.После добавления записных книжек, файлов Python и других артефактов в пакет убедитесь, что определение задания правильно ссылается на них. Например, для записной книжки с именем
hello.ipynb
, которая находится вsrc
каталоге пакета:resources: jobs: hello-job: name: hello-job tasks: - task_key: hello-task notebook_task: notebook_path: ../src/hello.ipynb
Создание существующего определения задания с помощью интерфейса командной строки Databricks
Чтобы программно создать конфигурацию пакета для существующего задания:
Получите идентификатор существующего задания в боковой панели сведений о задании для задания в пользовательском интерфейсе заданий или используйте команду Databricks CLI
databricks jobs list
.bundle generate job
Выполните команду CLI Databricks, задав идентификатор задания:databricks bundle generate job --existing-job-id 6565621249
Эта команда создает файл конфигурации пакета для задания в папке пакета
resources
и скачивает все указанные артефакты в папкуsrc
.Совет
Если вы сначала используете
bundle deployment bind
для привязки ресурса в пакете к ресурсу в рабочей области, ресурс в рабочей области обновляется на основе конфигурации, определенной в пакете, к которому он привязан, после следующегоbundle deploy
. Дополнительные сведения см. вbundle deployment bind
разделе «Привязка ресурсов пакета».
Настройка задания, использующего бессерверные вычисления
В следующих примерах показаны конфигурации пакета для создания задания, использующего бессерверные вычисления.
Чтобы использовать бессерверные вычисления для выполнения задания, включающего задачи записной книжки, исключите job_clusters
из файла конфигурации пакета.
# yaml-language-server: $schema=bundle_config_schema.json
bundle:
name: baby-names
resources:
jobs:
retrieve-filter-baby-names-job-serverless:
name: retrieve-filter-baby-names-job-serverless
tasks:
- task_key: retrieve-baby-names-task
notebook_task:
notebook_path: ./retrieve-baby-names.py
- task_key: filter-baby-names-task
depends_on:
- task_key: retrieve-baby-names-task
notebook_task:
notebook_path: ./filter-baby-names.py
targets:
development:
workspace:
host: <workspace-url>
Чтобы использовать бессерверные вычисления для выполнения задания, включающего задачи Python, включите конфигурацию environments
.
# yaml-language-server: $schema=bundle_config_schema.json
bundle:
name: serverless-python-tasks
resources:
jobs:
serverless-python-job:
name: serverless-job-with-python-tasks
tasks:
- task_key: wheel-task-1
python_wheel_task:
entry_point: main
package_name: wheel_package
environment_key: Default
environments:
- environment_key: Default
spec:
client: '1'
dependencies:
- workflows_authoring_toolkit==0.0.1
targets:
development:
workspace:
host: <workspace-url>
См. как выполнить задание Azure Databricks с бессерверными вычислениями для рабочих процессов.