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


Разработка задания в Azure Databricks с помощью пакетов ресурсов Databricks

Пакеты Databricks, также известные как просто пакеты, содержат артефакты, которые вы хотите развернуть, и настройки для ресурсов Azure Databricks, таких как задания, которые вы хотите выполнить, и позволяют программно проверять, развертывать и запускать их. См. раздел "Что такое пакеты ресурсов Databricks?".

В этой статье описывается, как создать пакет для программного управления заданием. См. раздел обзор оркестрации в системе Databricks. Пакет создается с использованием шаблона пакета по умолчанию для Python в Databricks Asset Bundles, который включает записную книжку и определение задания для её выполнения. Затем вы проверяете, развертываете и запускаете развернутую задачу в рабочей области Azure Databricks.

Совет

Если у вас есть задания, созданные с помощью пользовательского интерфейса заданий Azure Databricks Jobs или API, которые необходимо переместить в пакеты, необходимо определить их в файлах конфигурации пакета. Databricks рекомендует сначала создать пакет, выполнив приведенные ниже действия, а затем проверить, работает ли пакет. Затем в пакет можно добавить дополнительные определения заданий, записные книжки и другие источники. См. статью "Добавление существующего определения задания в пакет".

Требования

Создание пакета с помощью шаблона проекта

Сначала создайте пакет с помощью шаблона Python для пакетов ресурсов Databricks по умолчанию. Дополнительные сведения о шаблонах пакетов см. в разделе "Шаблоны проектов пакета ресурсов Databricks".

Если вы хотите создать пакет с нуля, см . статью "Создание пакета вручную".

Шаг 1. Настройка проверки подлинности

На этом шаге вы настроили проверку подлинности между интерфейсом командной строки Databricks на компьютере разработки и рабочей областью Azure Databricks. В этой статье предполагается, что вы хотите использовать аутентификацию пользователя к машине (U2M) через OAuth и соответствующий профиль конфигурации Azure Databricks с именем DEFAULT.

Примечание.

Проверка подлинности U2M подходит для выполнения этих действий в режиме реального времени. Для полностью автоматизированных рабочих процессов Databricks рекомендует вместо этого использовать аутентификацию OAuth машина-машина (M2M). Инструкции по настройке проверки подлинности M2M см. в разделе "Проверка подлинности".

  1. Используйте Databricks CLI для локального инициирования управления токенами OAuth, выполнив следующую команду для каждой целевой рабочей области.

    В следующей команде замените на URL-адрес рабочей области Azure Databricks , например, .

    databricks auth login --host <workspace-url>
    
  2. Интерфейс командной строки Databricks предлагает сохранить сведения, введенные в качестве профиля конфигурации Azure Databricks. Нажмите, Enter чтобы принять предлагаемое имя профиля, или введите имя нового или существующего профиля. Любой существующий профиль с тем же именем перезаписывается с введенными сведениями. Профили можно использовать для быстрого переключения контекста проверки подлинности в нескольких рабочих областях.

    Чтобы получить список существующих профилей в отдельном терминале или командной строке, используйте интерфейс командной строки Databricks для выполнения команды databricks auth profiles. Чтобы просмотреть существующие параметры конкретного профиля, выполните команду databricks auth env --profile <profile-name>.

  3. В веб-браузере выполните инструкции на экране, чтобы войти в рабочую область Azure Databricks.

  4. Чтобы просмотреть текущее значение маркера 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 по умолчанию.

  1. Используйте терминал или командную строку, чтобы переключиться в каталог на локальном компьютере разработки, который будет содержать созданный пакет шаблона.

  2. Используйте командную строку интерфейса Databricks для выполнения команды bundle init.

    databricks bundle init
    
  3. Для Template to use оставьте значение default-python по умолчанию, нажав клавишу Enter.

  4. Для Unique name for this project оставьте значение my_project по умолчанию или введите другое значение, а затем нажмите Enter. Это определяет имя корневого каталога для этого пакета. Этот корневой каталог создается в текущем рабочем каталоге.

  5. Для Include a stub (sample) notebookвыберите yes и нажмите клавишу Enter.

  6. Для Include a stub (sample) DLT pipelineвыберите no и нажмите клавишу Enter. Эта команда указывает интерфейсу командной строки Databricks не создавать пример конвейера DLT в составе вашего пакета.

  7. Для 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. Проверка файла конфигурации пакета проекта

На этом шаге проверяется, действительна ли конфигурация пакета.

  1. В корневом каталоге используйте интерфейс командной строки Databricks для выполнения bundle validate команды следующим образом:

    databricks bundle validate
    
  2. Если возвращается сводка конфигурации пакета, проверка выполнена успешно. Если возвращаются какие-либо ошибки, исправьте ошибки и повторите этот шаг.

При внесении изменений в пакет после этого шага необходимо повторить этот шаг, чтобы проверить, действительна ли конфигурация пакета.

Шаг 5. Развертывание локального проекта в удаленной рабочей области

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

  1. В корневом каталоге пакета используйте интерфейс командной строки Databricks, чтобы выполнить команду bundle deploy следующим образом:

    databricks bundle deploy -t dev
    
  2. Проверьте, развернута ли локальная записная книжка: на боковой панели рабочей области Azure Databricks щелкните "Рабочая область".

  3. Перейдите в папку Users ><your-username>> .bundle ><project-name>>dev > files > src. Записная книжка должна находиться в этой папке.

  4. Проверьте, создано ли задание: на боковой панели рабочей области Azure Databricks щелкните рабочие процессы.

  5. На вкладке "Задания " щелкните [dev <your-username>] <project-name>_job.

  6. Перейдите на вкладку "Задачи ". Должна быть одна задача: notebook_task.

При внесении изменений в пакет после этого шага необходимо повторить шаги 4–5, чтобы проверить, действительна ли конфигурация пакета, а затем повторно разверните проект.

Шаг 6. Запуск развернутого проекта

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

  1. В корневом каталоге используйте интерфейс командной строки Databricks для выполнения bundle run команды, как показано ниже, заменив <project-name> имя проекта на шаге 2.

    databricks bundle run -t dev <project-name>_job
    
  2. Скопируйте значение, которое отображается в терминале и вставьте это значение Run URL в веб-браузер, чтобы открыть рабочую область Azure Databricks. Просмотр и запуск задания, созданного с помощью пакета ресурсов Databricks

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

При внесении изменений в пакет после этого шага необходимо повторить шаги 4-6, чтобы проверить, действительна ли конфигурация пакета, повторно разверните проект и запустите повторно развернутый проект.

Шаг 7. Очистка

На этом шаге вы удалите развернутую записную книжку и задание из рабочей области.

  1. В корневом каталоге используйте интерфейс командной строки Databricks для выполнения bundle destroy команды следующим образом:

    databricks bundle destroy -t dev
    
  2. Подтвердите запрос на удаление задания: при появлении запроса на окончательное уничтожение ресурсов, введите y и нажмите клавишу Enter.

  3. Подтвердите запрос на удаление записной книжки: при появлении запроса на окончательное уничтожение ранее развернутой папки и всех его файлов, введите y и нажмите клавишу Enter.

  4. Если вы также хотите удалить пакет с компьютера разработки, теперь можно удалить локальный каталог из шага 2.

Добавление существующего определения задания в пакет

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

Сведения об определении задания в пакетах см. в разделе задания.

Получение существующего определения задания с помощью пользовательского интерфейса

Чтобы получить YAML представление существующего определения задачи из интерфейса пользователя рабочей области Azure Databricks:

  1. На боковой панели рабочей области Azure Databricks щелкните "Рабочие процессы".

  2. На вкладке "Задания" щелкните ссылку "Имя задания".

  3. Рядом с кнопкой "Выполнить сейчас" нажмите кнопку "Кебаб", а затем нажмите кнопку "Переключиться на код" (YAML).

  4. Добавьте скопированный YAML в файл databricks.yml вашего пакета или создайте файл конфигурации для вашего задания в каталоге resources проекта пакета и укажите на него из файла databricks.yml. См. (/dev-tools/bundles/settings.md#resources).

  5. Скачайте и добавьте все файлы и записные книжки 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

Чтобы программно создать конфигурацию пакета для существующего задания:

  1. Получите идентификатор существующего задания в боковой панели сведений о задании для задания в пользовательском интерфейсе заданий или используйте команду Databricks CLI databricks jobs list.

  2. 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 с бессерверными вычислениями для рабочих процессов.