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


Создание пакета вручную

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

Требования

Шаг 1. Создание пакета

Пакет содержит артефакты, которые требуется развернуть, и параметры для ресурсов, которые требуется запустить.

  1. Создайте или определите пустой каталог на компьютере разработки.
  2. Перейдите в пустой каталог в терминале или откройте его в интегрированной среде разработки.

Совет

Вы также можете использовать каталог, содержащий репозиторий, клонированный из Git-провайдера. Это позволяет управлять пакетом с помощью внешнего управления версиями и более легко сотрудничать с другими разработчиками и ИТ-специалистами в проекте.

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

Шаг 2. Добавление записных книжек в проект

На этом шаге вы добавите в проект две записные книжки. Первая записная книжка получает список популярных имен детей с 2007 года из общедоступных источников данных Госдепартамента Штата Нью-Йорк. Смотрите Имена детей: тренды по имени: начиная с 2007 года на сайте департамента. Затем первая записная книжка сохраняет эти данные в томе Azure Databricks Unity Catalog под именем my-volume, в схеме default, в каталоге main. Вторая записная книжка делает запрос к сохранённым данным и отображает сводные данные о детских именах по имени и полу за 2014 год.

  1. Из корневого каталога создайте первую записную книжку, файл с именем retrieve-baby-names.py.

  2. Добавьте в файл retrieve-baby-names.py следующий код:

    # Databricks notebook source
    import requests
    
    response = requests.get('http://health.data.ny.gov/api/views/jxy9-yhdk/rows.csv')
    csvfile = response.content.decode('utf-8')
    dbutils.fs.put("/Volumes/main/default/my-volume/babynames.csv", csvfile, True)
    
  3. Создайте вторую записную книжку, файл с именем filter-baby-names.pyв том же каталоге.

  4. Добавьте в файл filter-baby-names.py следующий код:

    # Databricks notebook source
    babynames = spark.read.format("csv").option("header", "true").option("inferSchema", "true").load("/Volumes/main/default/my-volume/babynames.csv")
    babynames.createOrReplaceTempView("babynames_table")
    years = spark.sql("select distinct(Year) from babynames_table").toPandas()['Year'].tolist()
    years.sort()
    dbutils.widgets.dropdown("year", "2014", [str(x) for x in years])
    display(babynames.filter(babynames.Year == dbutils.widgets.get("year")))
    

Шаг 3. Добавление файла схемы конфигурации пакета в проект

Если вы используете интегрированную среду разработки, например Visual Studio Code, PyCharm Professional или IntelliJ IDEA Ultimate, которая поддерживает файлы YAML и файлы схемы JSON, вы можете использовать интегрированную среду разработки, чтобы не только создать файл схемы конфигурации пакета, но и проверить синтаксис и форматирование файла конфигурации пакета проекта.

Visual Studio Code

  1. Добавьте поддержку сервера языка YAML в Visual Studio Code, например путем установки расширения YAML из Visual Studio Code Marketplace.

  2. Создайте файл схемы пакета ресурсов Databricks в формате JSON с помощью интерфейса командной строки Databricks для выполнения команды bundle schema и перенаправления выходных данных в JSON-файл. Например, создайте файл с именем bundle_config_schema.json в текущем каталоге следующим образом:

    databricks bundle schema > bundle_config_schema.json
    
  3. На шаге 4 вы добавите следующий комментарий в начало файла конфигурации пакета, который связывает файл конфигурации пакета с указанным файлом схемы JSON:

    # yaml-language-server: $schema=bundle_config_schema.json
    

    Примечание.

    В предыдущем комментарии, если ваш файл схемы конфигурации Databricks Asset Bundle находится в другом пути, замените bundle_config_schema.json на полный путь к вашему файлу схемы.

PyCharm Professional

  1. Создайте файл схемы пакета ресурсов Databricks в формате JSON с помощью интерфейса командной строки Databricks для выполнения команды bundle schema и перенаправления выходных данных в JSON-файл. Например, создайте файл с именем bundle_config_schema.json в текущем каталоге следующим образом:

    databricks bundle schema > bundle_config_schema.json
    
  2. Настройте PyCharm для распознавания файла схемы JSON конфигурации пакета, а затем завершите сопоставление схемы JSON, следуя инструкциям в разделе "Настройка пользовательской схемы JSON".

  3. На шаге 4 вы будете использовать PyCharm для создания или открытия файла конфигурации пакета. По соглашению этот файл называется databricks.yml.

IntelliJ IDEA Ultimate

  1. Создайте файл схемы пакета ресурсов Databricks в формате JSON с помощью интерфейса командной строки Databricks для выполнения команды bundle schema и перенаправления выходных данных в JSON-файл. Например, создайте файл с именем bundle_config_schema.json в текущем каталоге следующим образом:

    databricks bundle schema > bundle_config_schema.json
    
  2. Настройте IntelliJ IDEA, чтобы распознать файл схемы JSON конфигурации пакета, а затем завершить сопоставление схемы JSON, следуя инструкциям в разделе "Настройка пользовательской схемы JSON".

  3. На шаге 4 вы будете использовать IntelliJ IDEA для создания или открытия файла конфигурации пакета. По соглашению этот файл называется databricks.yml.

Шаг 4. Добавление файла конфигурации пакета в проект

На этом шаге вы определите, как развернуть и запустить два ноутбука. Для этой демонстрации вы хотите использовать задание Azure Databricks для запуска первой записной книжки, а затем второй записной книжки. Так как первая записная книжка сохраняет данные, а вторая записная книжка запрашивает сохраненные данные, необходимо, чтобы первая записная книжка была завершена до запуска второй записной книжки. Эти цели моделировались в файле конфигурации пакета в проекте.

  1. В корневом каталоге создайте файл конфигурации пакета, файл с именем databricks.yml.
  2. Добавьте следующий код в databricks.yml файл, заменив <workspace-url> на URL-адрес рабочей области, например https://adb-1234567890123456.7.azuredatabricks.net. Этот URL-адрес должен соответствовать этому URL-адресу в файле .databrickscfg :

Совет

Первая строка, начиная с # yaml-language-server, требуется только в том случае, если интегрированная среда разработки поддерживает ее. Дополнительные сведения см. на шаге 3 выше.

# yaml-language-server: $schema=bundle_config_schema.json
bundle:
  name: baby-names

resources:
  jobs:
    retrieve-filter-baby-names-job:
      name: retrieve-filter-baby-names-job
      job_clusters:
        - job_cluster_key: common-cluster
          new_cluster:
            spark_version: 12.2.x-scala2.12
            node_type_id: Standard_DS3_v2
            num_workers: 1
      tasks:
        - task_key: retrieve-baby-names-task
          job_cluster_key: common-cluster
          notebook_task:
            notebook_path: ./retrieve-baby-names.py
        - task_key: filter-baby-names-task
          depends_on:
            - task_key: retrieve-baby-names-task
          job_cluster_key: common-cluster
          notebook_task:
            notebook_path: ./filter-baby-names.py

targets:
  development:
    workspace:
      host: <workspace-url>

Для настройки заданий сопоставления в объявлении задания соответствуют телу запроса, выраженному в формате YAML, операции создания задания, как описано в POST /api/2.1/jobs/create в справочнике по REST API.

Совет

Вы можете определить, объединить и переопределить параметры для новых кластеров заданий в пакетах с помощью методов, описанных в разделе "Переопределение параметров кластера" в пакетах ресурсов Databricks.

Шаг 5. Проверка файла конфигурации пакета проекта

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

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

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

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

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

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

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

    databricks bundle deploy -t development
    
  2. Проверьте, были ли развернуты две локальные ноутбуки: на боковой панели рабочей области Azure Databricks щелкните Workspace.

  3. Щелкните папку "Пользователи ><your-username>> .bundle > baby-name>" для файлов разработки>. Две записные книжки должны находиться в этой папке.

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

  5. При необходимости выберите фильтры "Задания " и " Принадлежащие мне ".

  6. Щелкните retrieve-filter-baby-names-job.

  7. Перейдите на вкладку Задачи. Должно быть две задачи: задача-получение-имен-детей и задача-фильтрации-имен-детей.

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

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

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

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

    databricks bundle run -t development retrieve-filter-baby-names-job
    
  2. Скопируйте значение, которое отображается в терминале и вставьте это значение Run URL в веб-браузер, чтобы открыть рабочую область Azure Databricks.

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

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

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

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

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

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

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

При запуске команды bundle destroy удаляется только развернутое задание и папка, содержащая две развернутые записные книжки. Эта команда не удаляет побочные эффекты, например babynames.csv файл, созданный первой записной книжкой. Чтобы удалить babybnames.csv файл, сделайте следующее:

  1. На боковой панели рабочей области Azure Databricks щелкните "Каталог".
  2. Нажмите кнопку "Обзор DBFS".
  3. Щелкните папку FileStore .
  4. Щелкните стрелку раскрывающегося списка рядом с babynames.csvи нажмите кнопку "Удалить".
  5. Если вы также хотите удалить пакет с компьютера разработки, вы можете удалить локальный каталог с шага 1.