Управление библиотеками для Apache Spark в Azure Synapse Analytics

Библиотеки предоставляют повторно используемый код, который может потребоваться включить в программы или проекты Apache Spark в Azure Synapse Analytics (Azure Synapse Spark).

Вам может потребоваться обновить среду бессерверного пула Apache Spark по различным причинам. Например, может оказаться, что:

  • одна из основных зависимостей имеет новую версию;
  • необходим дополнительный пакет для обучения модели машинного обучения или подготовки данных;
  • Более лучший пакет доступен, и вам больше не нужен старый пакет.
  • ваша команда создала пользовательский пакет, который должен быть доступен в пуле Apache Spark.

Чтобы сделать сторонний или локальный код доступным для приложений, установите библиотеку на один из бессерверных пулов Apache Spark или сеанс записной книжки.

Обзор уровней пакетов

Существует три уровня пакетов, установленных в Azure Synapse Analytics:

  • По умолчанию: пакеты по умолчанию включают полную установку Anaconda, а также дополнительные часто используемые библиотеки. Полный список библиотек см. в разделе "Поддержка версий Apache Spark".

    При запуске экземпляра Spark эти библиотеки будут добавлены автоматически. Вы можете добавить дополнительные пакеты на других уровнях.

  • Пул Spark: все работающие артефакты могут использовать пакеты на уровне пула Spark. Например, можно присоединить определения заданий Spark и записную книжку к соответствующим пулам Spark.

    Вы можете отправить пользовательские библиотеки и определенную версию библиотеки с открытым кодом, которую вы хотите использовать в рабочей области Azure Synapse Analytics. Пакеты рабочей области можно установить в пулах Spark.

  • Сеанс. Установка на уровне сеанса создает среду для определенного сеанса записной книжки. Изменение библиотек уровня сеанса не сохраняется между сеансами.

Примечание.

  • Управление библиотекой уровня пула может занять время, в зависимости от размера пакетов и сложности необходимых зависимостей, максимальное время обновления задается как 50 минут. Задание управления библиотекой уровня пула будет отменено автоматически, если оно превышает верхний предел в 50 минут. Мы рекомендуем установить уровень сеанса для экспериментальных и быстрых итеративных сценариев.
  • Управление библиотекой уровня пула создаст стабильную зависимость для выполнения определений заданий Notebook и Spark. Установка библиотеки в пул Spark настоятельно рекомендуется для выполнения конвейера.
  • Управление библиотекой уровня сеанса поможет вам быстро итерации или с частыми изменениями библиотеки. Однако стабильность установки уровня сеанса не обещается. Кроме того, команды в строке, такие как %pip и %conda, отключены в выполнении конвейера. Во время разработки рекомендуется управлять библиотекой в сеансе Notebook.

Управление пакетами рабочей области

При разработке пользовательских приложений или моделей вы можете разрабатывать различные артефакты кода, такие как WHL, .jar или .tar.gz файлы для упаковки кода.

Внимание

  • tar.gz поддерживается только для языка R. Используйте WHL в качестве пользовательского пакета Python.

В Azure Synapse пакеты рабочей области могут быть пользовательскими или частными WHL или .jar файлами. Вы можете передать эти пакеты в рабочую область и позже назначить их определенному бессерверному пулу Apache Spark. После назначения этих пакетов рабочей области они устанавливаются автоматически во всех сеансах пула Spark.

Дополнительные сведения об управлении библиотеками рабочих областей см. в статье "Управление пакетами рабочей области".

Управление пакетами пула

В некоторых случаях может потребоваться стандартизировать пакеты, используемые в пуле Apache Spark. Эта стандартизация может быть полезной, если несколько пользователей в вашей команде обычно устанавливают одни и те же пакеты.

С помощью возможностей управления пулами Azure Synapse Analytics можно настроить набор библиотек по умолчанию для установки в бессерверном пуле Apache Spark. Эти библиотеки устанавливаются поверх базовой среды выполнения.

Для библиотек Python пулы Azure Synapse Spark используют Conda для установки зависимостей пакетов Python и управления ими. Библиотеки Python на уровне пула можно указать, предоставив requirements.txt или файл environment.yml . Этот файл конфигурации среды используется при каждом создании экземпляра Spark из этого пула Spark. Вы также можете присоединить пакеты рабочей области к пулам.

Дополнительные сведения об этих возможностях см. в статье Управление пакетами пула Spark.

Внимание

  • Если пакет, который вы устанавливаете, большой или занимает много времени для установки, это может повлиять на время запуска экземпляра Spark.
  • Изменение версии PySpark, Python, Scala/Java, .NET или Spark не поддерживается.

Управление зависимостями для пулов Azure Synapse Spark с поддержкой DEP

Примечание.

Установка пакетов из общедоступного репозитория не поддерживается в рабочих областях с поддержкой DEP. Вместо этого отправьте все зависимости в виде библиотек рабочей области и установите их в пул Spark.

Если у вас возникли проблемы с определением необходимых зависимостей, выполните следующие действия.

  1. Выполните следующий сценарий, чтобы настроить локальную среду Python, которая аналогична среде Azure Synapse Spark. Для этого скрипта требуется ФАЙЛ YAML, содержащий список всех библиотек, включенных в среду Python по умолчанию для Azure Synapse Spark. Этот файл YAML можно найти в документации по определенным версиям среды выполнения, таким как Apache Spark 3.2 (объявление о завершении поддержки) и Apache Spark 3.3 (GA).

       # One-time Azure Synapse Python setup
       wget Synapse-Python38-CPU.yml
       sudo bash Miniforge3-Linux-x86_64.sh -b -p /usr/lib/miniforge3
       export PATH="/usr/lib/miniforge3/bin:$PATH"
       sudo apt-get -yq install gcc g++
       conda env create -n synapse-env -f Synapse-Python38-CPU.yml 
       source activate synapse-env
    
  2. Выполните следующий скрипт, чтобы определить необходимые зависимости. Скрипт можно использовать для передачи файла requirements.txt , который содержит все пакеты и версии, которые планируется установить в пуле Spark 3.1 или Spark 3.2. В нем будут напечатаны имена новых файлов колес или зависимостей для требований к входной библиотеке.

       # Command to list wheels needed for your input libraries.
       # This command will list only new dependencies that are
       # not already part of the built-in Azure Synapse environment.
       pip install -r <input-user-req.txt> > pip_output.txt
       cat pip_output.txt | grep "Using cached *"
    

    Примечание.

    Этот скрипт будет содержать список только зависимостей, которые еще не присутствуют в пуле Spark по умолчанию.

Управление пакетами на уровне сеанса

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

Пакеты на уровне сеанса позволяют пользователям определять зависимости пакетов в начале сеанса. При установке пакета уровня сеанса только текущий сеанс имеет доступ к указанным пакетам. В результате эти пакеты с область сеансами не влияют на другие сеансы или задания, использующие тот же пул Apache Spark. Кроме того, эти библиотеки устанавливаются на основе базовых пакетов среды выполнения и пула.

Дополнительные сведения об управлении пакетами на уровне сеанса см. в следующих статьях:

  • Пакеты сеансов Python: в начале сеанса предоставьте файл Conda environment.yml для установки дополнительных пакетов Python из популярных репозиториев. Вы также можете использовать %pip и %conda команды для управления библиотеками в ячейках кода записной книжки.

    Внимание

    Не используйте%%sh , чтобы попытаться установить библиотеки с pip или conda. Поведение не совпадает с поведением %pip или %conda.

  • Пакеты сеансов Scala/Java: в начале сеанса укажите список .jar файлов для установки с помощью %%configure.

  • Пакеты сеансов R. В рамках сеанса можно установить пакеты на всех узлах в пуле Spark с помощью install.packages или devtools.

Автоматизация процесса управления библиотекой с помощью командлетов Azure PowerShell и REST API

Если ваша команда хочет управлять библиотеками без посещения пользовательских интерфейсов управления пакетами, у вас есть возможность управлять пакетами рабочей области и обновлениями пакетов на уровне пула с помощью командлетов Azure PowerShell или REST API для Azure Synapse Analytics.

Дополнительные сведения см. в следующих статьях:

Следующие шаги