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


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

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

Требования

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

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

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

Совет

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

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

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

На этом шаге вы добавите в проект две записные книжки. Первая записная книжка получает список популярных имен детей с 2007 года из общедоступных источников данных Госдепартамента Штата Нью-Йорк. См . названия детей: тренд по имени: начиная с 2007 года на веб-сайте отдела. Затем первая записная книжка сохраняет эти данные в том каталога Azure Databricks Unity с именем в схеме с именем default в каталоге с именем.my-volume 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, вы можете использовать интегрированную среду разработки, чтобы не только создать файл схемы конфигурации пакета, но и проверить синтаксис и форматирование файла конфигурации пакета проекта. Хотя файл конфигурации пакета, создаваемый далее на шаге 5, основан на 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. На шаге 5 вы добавите следующий комментарий в начало файла конфигурации пакета, который связывает файл конфигурации пакета с указанным файлом схемы JSON:

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

    Примечание.

    Если файл схемы пакета ресурсов Databricks находится в другом пути, замените 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. На шаге 5 вы будете использовать 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. На шаге 5 вы будете использовать IntelliJ IDEA для создания или открытия файла конфигурации пакета. По соглашению этот файл называется databricks.yml.

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

На этом шаге вы настроили проверку подлинности между интерфейсом командной строки 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.

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

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

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

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

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

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

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

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

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

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

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

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

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

  5. На вкладке "Задания" щелкните retrieve-filter-baby-name-job.

  6. Перейдите на вкладку "Задачи ". Должно быть два задачи: получение-baby-name-task и filter-baby-name-task.

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

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

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

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

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

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

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

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

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

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

    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.