Administración de bibliotecas para Apache Spark en Azure Synapse Analytics

Las bibliotecas proporcionan código reutilizable que puede querer incluir en sus programas o proyectos para Apache Spark en Azure Synapse Analytics (Azure Synapse Spark).

Es posible que tenga que actualizar el entorno de grupo de Apache Spark sin servidor por varios motivos. Por ejemplo, podría especificar:

  • Si se ha publicado una nueva versión de una de sus dependencias principales.
  • Si necesita un paquete adicional para entrenar su modelo de aprendizaje automático o preparar sus datos.
  • Hay disponible un paquete mejor y ya no necesita el antiguo.
  • Si su equipo ha creado un paquete personalizado y necesita que esté disponible en el grupo de Apache Spark.

A fin de que el código de terceros o de compilación local esté disponible para las aplicaciones, instale una biblioteca en uno de los grupos de Apache Spark sin servidor o en una sesión de cuaderno.

Información general sobre los niveles de paquetes

Hay tres niveles de paquetes instalados en Azure Synapse Analytics:

  • Predeterminado: los paquetes predeterminados incluyen una instalación completa de Anaconda, además de bibliotecas adicionales de uso común. Para ver una lista completa de bibliotecas, consulte Soporte de versiones de Apache Spark.

    Cuando se inicie una instancia de Spark, estas bibliotecas se incluyen automáticamente. Puede agregar más paquetes en los otros niveles.

  • Grupo de Spark: todos los artefactos en ejecución pueden usar paquetes en el nivel de grupo de Spark. Por ejemplo, puede adjuntar definiciones de trabajo de Notebook y Spark a los grupos de Spark correspondientes.

    Puede cargar bibliotecas personalizadas y una versión específica de una biblioteca de código abierto que quiera usar en el área trabajo de Azure Synapse Analytics. Los paquetes del área de trabajo se pueden instalar en los grupos de Spark.

  • Sesión: una instalación de nivel de sesión crea un entorno para una sesión de bloc de notas específica. El cambio de las bibliotecas de nivel de sesión no se conserva entre sesiones.

Nota

  • La administración de la biblioteca a nivel de grupo puede llevar tiempo, según el tamaño de los paquetes y la complejidad de las dependencias requeridas, el tiempo máximo de actualización se establece en 50 minutos. El trabajo de administración de biblioteca a nivel de grupo se cancelará automáticamente si supera el límite superior de 50 minutos. Recomendamos la instalación a nivel de sesión para escenarios experimentales y de iteración rápida.
  • La administración de bibliotecas de nivel de grupo generará una dependencia estable para ejecutar las definiciones de trabajo de Notebooks y Spark. La instalación de la biblioteca en el grupo de Spark es muy recomendable para las ejecuciones de canalización.
  • La administración de bibliotecas de nivel de sesión puede ayudarle con una iteración rápida o con los cambios frecuentes de la biblioteca. Sin embargo, no se promete la estabilidad de la instalación de nivel de sesión. Además, los comandos en línea como %pip y %conda están deshabilitados en la ejecución de canalización. La administración de la biblioteca en la sesión de Notebook se recomienda durante la fase de desarrollo.

Administración de paquetes de área de trabajo

Cuando el equipo desarrolla aplicaciones o modelos personalizados, puede desarrollar varios artefactos de código, como archivos .whl, .jar o .tar.gz para empaquetar el código.

Importante

  • tar.gz solo lo admite el lenguaje R. Use .whl como paquete personalizado de Python.

En Azure Synapse, los paquetes de área de trabajo pueden ser archivos .whl o .jar personalizados o privados. Puede cargar estos paquetes en su área de trabajo y después asignarlos a un grupo de Apache Spark sin servidor específico. Una vez asignados, estos paquetes de área de trabajo se instalan automáticamente en todas las sesiones del grupo de Spark.

Para más información sobre cómo administrar bibliotecas del área de trabajo, consulte Administración de paquetes del área de trabajo.

Administración de paquetes de grupo

En algunos casos, es posible que quiera estandarizar los paquetes que se usan en un grupo de Apache Spark. Esta estandarización puede ser útil si varias personas del equipo suelen instalar los mismos paquetes.

El uso de las capacidades de administración de grupos de Azure Synapse Analytics permite configurar el conjunto predeterminado de bibliotecas que se instalarán en un grupo de Apache Spark sin servidor. Estas bibliotecas se instalan sobre el entorno de ejecución base.

Para las bibliotecas Python, los grupos de Azure Synapse Spark utilizan Conda para instalar y administrar las dependencias de paquetes Python. Puede especificar las bibliotecas de Python de nivel de grupo proporcionando un archivo requirements.txt o environment.yml. Este archivo de configuración del entorno se usa cada vez que se crea una instancia de Spark desde ese grupo de Spark. También puede adjuntar los paquetes del área de trabajo a los grupos.

Para más información sobre estas funcionalidades, consulte Administración de paquetes de grupo de Spark.

Importante

  • Si el paquete que va a instalar es de gran tamaño o tarda mucho tiempo en instalarse, podría afectar al tiempo de arranque de la instancia de Spark.
  • No se admite la modificación de la versión de PySpark, Python, Scala/Java, .NET o Spark.

Administración de dependencias para grupos de Azure Synapse Spark habilitados para DEP

Nota

La instalación de paquetes desde un repositorio público no es compatible con espacios de trabajo habilitados para DEP. En su lugar, cargue todas las dependencias como bibliotecas del área de trabajo e instálelas en el grupo de Spark.

Si tiene problemas para identificar las dependencias necesarias, siga estos pasos:

  1. Ejecute el siguiente script para configurar un entorno de Python local que sea el mismo que el entorno de Azure Synapse Spark. Este script requiere un archivo YAML que contenga una lista de todas las bibliotecas incluidas en el entorno de Python predeterminado para Azure Synapse Spark. Puede encontrar este archivo YAML en la documentación de versiones específicas del entorno de ejecución, como Apache Spark 3.2 (fin de soporte anunciado) y 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. Ejecute el siguiente script para identificar las dependencias necesarias. El script se puede usar para pasar el archivo derequirements.txt, que tiene todos los paquetes y versiones que desea instalar en el grupo de Spark 3.1 o Spark 3.2. Imprimirá los nombres de los nuevos archivos o dependencias de rueda para los requisitos de la biblioteca de entrada.

       # 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 *"
    

    Nota

    Este script enumerará solo las dependencias que no estén ya presentes en el grupo de Spark de forma predeterminada.

Administración de paquetes de ámbito de sesión

Al realizar análisis de datos interactivos o aprendizaje automático, puede probar paquetes más recientes o necesitar paquetes que ya no están disponibles en el grupo de Apache Spark. En lugar de actualizar la configuración del grupo, ahora puede usar paquetes de ámbito de sesión para agregar, administrar y actualizar dependencias de sesión.

Los paquetes de ámbito de sesión permiten a los usuarios definir las dependencias de paquetes al inicio de la sesión. Cuando se instala un paquete de ámbito de sesión, solo la sesión actual tiene acceso a los paquetes especificados. Como resultado, estos paquetes de ámbito de sesión no afectarán a otras sesiones u otros trabajos que usen el mismo grupo de Apache Spark. Además, las bibliotecas se instalan sobre el entorno de ejecución base y los paquetes de nivel de grupo.

Para más información sobre cómo administrar paquetes de ámbito de sesión, consulte las siguientes guías paso a paso:

  • Paquetes de sesión de Python: al inicio de una sesión, proporcione un archivo environment.yml de Conda para instalar más paquetes de Python desde repositorios populares. También puede usar comandos %pip y %conda para administrar bibliotecas en las celdas de código de Notebook.

    Importante

    No usar%%sh para probar e instalar bibliotecas con pip o conda. El comportamiento no es el mismo que %pip o %conda.

  • Paquetes de sesión de Scala/Java: al inicio de la sesión, proporcione una lista de los archivos .jar que se van a instalar mediante %%configure.

  • Paquetes de sesión de R: dentro de la sesión, puede instalar paquetes en todos los nodos del grupo de Spark mediante install.packages o devtools.

Automatización del proceso de administración de bibliotecas mediante cmdlets de Azure PowerShell y API REST

Si el equipo quiere administrar las bibliotecas sin visitar las interfaces de usuario de administración de paquetes, tiene las opciones de administrar los paquetes de área de trabajo y las actualizaciones de paquetes de nivel de grupo mediante los cmdlets de Azure PowerShell o las API de REST para Azure Synapse Analytics.

Para más información, consulte los siguientes artículos.

Pasos siguientes