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


Создание файла колес Python с помощью пакетов ресурсов Databricks

На этой странице описывается, как создавать, развертывать и запускать файл колесика Python с помощью пакетов ресурсов Databricks. См. раздел "Что такое пакеты ресурсов Databricks?".

Пример конфигурации, которая создает JAR-файл и отправляет его в каталог Unity, см. в разделе Пакет, который загружает JAR-файл в каталог Unity.

Requirements

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

Создайте пакет с помощью шаблона пакета ресурсов Databricks по умолчанию для Python. Этот пакет состоит из файлов для сборки в файл колесика Python и определения задания Azure Databricks для создания этого файла колес Python. Затем вы проверяете, развертываете и пакуете развернутые файлы в wheel-файл Python с помощью задания wheel в рабочей области Azure Databricks.

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

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

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

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

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

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

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

  5. Для Include a job that runs a notebook, выберите no и нажмите Enter. Это указывает интерфейсу командной строки Databricks не добавлять пример записной книжки в ваш пакет.

  6. Для Include an ETL pipeline, выберите no и нажмите Enter. При этом интерфейс командной строки Databricks не определяет пример конвейера в пакете.

  7. Для Include a stub (sample) Python package оставьте значение yes по умолчанию, нажав Enter. Это инструктирует Databricks CLI добавить в вашу сборку примерные файлы Python wheel пакета и соответствующие инструкции по сборке.

  8. Для Use serverless, выберите yes и нажмите Enter. В этом случае интерфейс командной строки Databricks позволяет настроить пакет для выполнения без сервера вычислений.

  9. Введите Default catalog for any tables created by this project [hive_metastore] имя существующего каталога Unity Catalog.

  10. Для Use a personal schema for each user working on this project., выберите yes.

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

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

  • databricks.yml: этот файл указывает имя пакета, содержит ссылки на файлы пакета, задает whl параметры сборки, определяет переменные каталога и схемы и задает параметры для целевых рабочих областей.
  • resources/sample_job.job.yml: этот файл задает параметры задания для пакета Python в формате wheel. Сведения о параметрах задания см. в разделе "Задание".
  • src/: эта папка содержит файлы, которые использует задание колеса Python для создания файла колес Python.
  • tests/: эта папка содержит примеры модульных тестов.
  • README.md: этот файл содержит дополнительные сведения о начале работы и использовании этого шаблона пакета.

Note

Если вы хотите установить файл колеса Python в кластере с Databricks Runtime 12.2 LTS или ниже, необходимо добавить в файл следующее сопоставление databricks.yml верхнего уровня:

# Applies to all tasks of type python_wheel_task.
experimental:
  python_wheel_wrapper: true

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

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

  1. Из корневого каталога используйте CLI Databricks для выполнения команды bundle validate.

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

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

Затем разверните пакет в удаленной рабочей области Azure Databricks. Создайте файл колесика Python. Убедитесь, что задание Azure Databricks создано в вашей рабочей области.

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

    databricks bundle deploy --target dev
    
  2. Убедитесь, что локально созданный файл колеса Python был развернут:

    1. На боковой панели рабочей области Azure Databricks щелкните "Рабочая область".
    2. Щелкните в следующей папке: "Пользователи >><your-username>рабочей области > .bundle.dev><project-name>>> артефакты > .internal><whl-file-name>.whl".

    Файл колеса Python должен находиться в этой папке.

  3. Проверьте, было ли задание создано.

    1. На боковой панели рабочей области Azure Databricks щелкните "Задания и конвейеры".
    2. При необходимости выберите фильтры "Задания " и " Принадлежащие мне ".
    3. Щелкните [dev <your-username>] sample_job.
    4. Перейдите на вкладку Задачи. Должно быть одно python_wheel_task.

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

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

Теперь активируйте выполнение задания Azure Databricks в рабочей области.

  1. Из корневого каталога используйте CLI Databricks для выполнения команды bundle run.

    databricks bundle run --target dev sample_job
    
  2. Скопируйте значение, которое отображается в терминале и вставьте это значение Run URL в веб-браузер, чтобы открыть рабочую область Azure Databricks.

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

Создание whl с помощью поэзии или инструментов установки

При использовании databricks bundle init с шаблоном Python по умолчанию создается пакет, показывающий, как настроить пакет, который создает колесо Python с помощью uv и pyproject.toml. Однако вы можете использовать поэзию или setuptools вместо этого построить колесо.

Установите Poetry или setuptools

  1. Установка Poetry или setuptools:

    Poetry

    • Установите поэзию, версию 1.6 или более поздней, если она еще не установлена. Чтобы проверить установленную версию поэзии, выполните команду poetry -V или poetry --version.
    • Убедитесь, что установлен Python версии 3.10 или более поздней. Чтобы проверить версию Python, выполните команду python -V или python --version.

    Setuptools

    Установите пакеты wheel и setuptools, если они еще не установлены, выполнив следующую команду:

    pip3 install --upgrade wheel setuptools
    
  2. Если вы планируете сохранить этот пакет с поставщиком Git, добавьте .gitignore файл в корневой каталог проекта и добавьте в этот файл следующие записи:

    Poetry

    .databricks
    dist
    

    Setuptools

    .databricks
    build
    dist
    src/my_package/my_package.egg-info
    

Добавление файлов сборки

  1. В корневом каталоге пакета создайте следующие папки и файлы в зависимости от того, используется ли поэзия или setuptools для создания файлов колес Python:

    Poetry

    ├── src
    │     └── my_package
    │           ├── __init__.py
    │           ├── main.py
    │           └── my_module.py
    └── pyproject.toml
    

    Setuptools

    ├── src
    │     └── my_package
    │           ├── __init__.py
    │           ├── main.py
    │           └── my_module.py
    └── setup.py
    
  2. Добавьте следующий код в pyproject.toml файл или setup.py файл:

    Pyproject.toml

    [tool.poetry]
    name = "my_package"
    version = "0.0.1"
    description = "<my-package-description>"
    authors = ["my-author-name <my-author-name>@<my-organization>"]
    
    [tool.poetry.dependencies]
    python = "^3.10"
    
    [build-system]
    requires = ["poetry-core"]
    build-backend = "poetry.core.masonry.api"
    
    [tool.poetry.scripts]
    main = "my_package.main:main"
    
    • Замените my-author-name основным именем контакта вашей организации.
    • Замените my-author-name>@<my-organization основным контактным адресом электронной почты вашей организации.
    • Замените <my-package-description> на описание для отображения файла Python wheel.

    Setup.py

    from setuptools import setup, find_packages
    
    import src
    
    setup(
      name = "my_package",
      version = "0.0.1",
      author = "<my-author-name>",
      url = "https://<my-url>",
      author_email = "<my-author-name>@<my-organization>",
      description = "<my-package-description>",
      packages=find_packages(where='./src'),
      package_dir={'': 'src'},
      entry_points={
        "packages": [
          "main=my_package.main:main"
        ]
      },
      install_requires=[
        "setuptools"
      ]
    )
    
    • Замените https://<my-url> URL-адресом вашей организации.
    • Замените <my-author-name> основным именем контакта вашей организации.
    • Замените <my-author-name>@<my-organization> основным контактным адресом электронной почты вашей организации.
    • Замените <my-package-description> на описание для отображения файла Python wheel.

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

  1. artifacts Добавьте конфигурацию сопоставления в databricks.yml для создания артефактаwhl:

    Poetry

    Эта конфигурация выполняет команду poetry build и указывает, что путь к файлу pyproject.toml находится в том же каталоге, что и файл databricks.yml.

    Note

    Если вы уже создали wheel-файл Python и хотите его задеплоить, измените следующий файл конфигурации пакета, исключив artifacts сопоставление. Затем интерфейс командной строки Databricks предполагает, что файл колесика Python уже создан и автоматически развертывает файлы, указанные в libraries записях массива whl .

    bundle:
      name: my-wheel-bundle
    
    artifacts:
      default:
        type: whl
        build: poetry build
        path: .
    
    resources:
      jobs:
        wheel-job:
          name: wheel-job
          tasks:
            - task_key: wheel-task
              new_cluster:
                spark_version: 13.3.x-scala2.12
                node_type_id: Standard_DS3_v2
                data_security_mode: USER_ISOLATION
                num_workers: 1
              python_wheel_task:
                entry_point: main
                package_name: my_package
              libraries:
                - whl: ./dist/*.whl
    
    targets:
      dev:
        workspace:
        host: <workspace-url>
    

    Setuptools

    Эта конфигурация выполняет команду setuptools и указывает, что путь к файлу setup.py находится в том же каталоге, что и файл databricks.yml.

    bundle:
      name: my-wheel-bundle
    
    artifacts:
      default:
        type: whl
        build: python3 setup.py bdist wheel
        path: .
    
    resources:
      jobs:
        wheel-job:
          name: wheel-job
          tasks:
            - task_key: wheel-task
              new_cluster:
                spark_version: 13.3.x-scala2.12
                node_type_id: Standard_DS3_v2
                data_security_mode: USER_ISOLATION
                num_workers: 1
              python_wheel_task:
                entry_point: main
                package_name: my_package
              libraries:
                - whl: ./dist/*.whl
    
    targets:
      dev:
        workspace:
        host: <workspace-url>