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


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

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

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

Совет

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

Требования

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

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

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

Шаг 1. Настройка аутентификации

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

Примечание.

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

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

    В следующей команде замените <workspace-url> URL-адрес Azure Databricks для каждой рабочей области, напримерhttps://adb-1234567890123456.7.azuredatabricks.net.

    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 одинаковым значением, может потребоваться указать и -p параметры --host вместе, чтобы помочь Databricks CLI найти правильные соответствующие сведения о маркере OAuth.

Шаг 2. Инициализация пакета

Инициализация пакета с помощью шаблона проекта пакета Python по умолчанию.

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

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

    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 не определяет пример конвейера Delta Live Tables в пакете.

  7. Для Include a stub (sample) Python package, выберите no и нажмите Enter. В этом случае интерфейс командной строки Databricks не добавляет примеры файлов пакета колес Python или связанных инструкций по сборке в пакет.

Шаг 3. Изучение пакета

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

  • databricks.yml: этот файл указывает программное имя пакета, содержит ссылку на определение задания и задает параметры целевой рабочей области.
  • resources/<project-name>_job.yml: этот файл задает параметры задания, включая задачу записной книжки по умолчанию.
  • src/notebook.ipynb: этот файл представляет собой пример записной книжки, которая при запуске просто инициализирует удаленный рабочий диск, содержащий цифры 1–10.

Для настройки заданий сопоставления в объявлении задания соответствуют полезным данным запроса, выраженным в формате YAML, операции создания задания, как описано в 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, скопированный в файл пакета, или создайте файл конфигурации для задания в resources каталоге проекта пакета databricks.yml и сослаться на него из файлаdatabricks.yml. См. раздел (/dev-tools/bundles/settings.md#resources).

  5. Скачайте и добавьте все файлы и записные книжки Python, на которые ссылается существующее задание, в источник проекта пакета. Обычно артефакты пакета находятся в каталоге src в пакете.

    Совет

    Вы можете экспортировать существующую записную книжку из рабочей области Azure Databricks в .ipynb формат, нажав кнопку "Экспорт > iPython > Notebook" из пользовательского интерфейса записной книжки Azure Databricks.

    После добавления записных книжек, файлов 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. Получите идентификатор существующего задания на боковой панели сведений о задании для задания в пользовательском интерфейсе заданий или используйте команду CLI databricks jobs list Databricks.

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