Gérer des bibliothèques pour Apache Spark dans Azure Synapse Analytics

Les bibliothèques fournissent du code réutilisable que vous pouvez inclure dans vos programmes ou projets pour Apache Spark dans Azure Synapse Analytics (Azure Synapse Spark).

Plusieurs raisons peuvent vous amener à mettre à jour l’environnement de votre pool Apache Spark serverless. Par exemple, il se peut que :

  • L’une de vos dépendances de base ait publié une nouvelle version.
  • Vous ayez besoin d’un autre package pour entraîner votre modèle Machine Learning ou préparer vos données.
  • Un meilleur package est disponible et vous n’avez plus besoin de l’ancien package.
  • Votre équipe ait créé un package personnalisé et que vous en ayez besoin dans votre pool Apache Spark.

Pour que vos applications aient accès au code tiers ou généré localement, installez une bibliothèque sur l’un de vos pools Apache Spark serverless ou sur une session de notebook.

Vue d’ensemble des niveaux de package

Trois niveaux de packages sont installés sur Azure Synapse Analytics :

  • Par défaut : Les packages par défaut incluent une installation complète d’Anaconda ainsi que des bibliothèques supplémentaires couramment utilisées. Pour obtenir la liste complète des bibliothèques, consultez Prise en charge des versions d’Apache Spark.

    Lors du démarrage d’une instance Spark, ces bibliothèques sont incluses automatiquement. Vous pouvez ajouter des packages d’autres niveaux.

  • Pool Spark : Tous les artefacts en cours d’exécution peuvent utiliser des packages au niveau du pool Spark. Par exemple, vous pouvez attacher des définitions de travail Spark et de notebook aux pools Spark correspondants.

    Vous pouvez charger des bibliothèques personnalisées et une version spécifique d’une bibliothèque open source à utiliser dans votre espace de travail Azure Synapse Analytics. Les packages d’espace de travail peuvent être installés dans vos pools Spark.

  • Session : Une installation de niveau session crée un environnement pour une session de notebook spécifique. La modification des bibliothèques de niveau session n’est pas persistante entre les sessions.

Notes

  • La gestion de bibliothèques au niveau d’un pool peut prendre du temps selon la taille des packages et la complexité des dépendances nécessaires. Le temps maximal de mise à jour est défini sur 50 minutes. Votre travail de gestion de bibliothèques au niveau d’un pool est automatiquement annulé s’il dépasse la limite supérieure de 50 minutes. Nous recommandons l’installation de niveau session pour les scénarios itératifs rapides et expérimentaux.
  • La gestion de la bibliothèque au niveau du pool génère une dépendance stable pour l’exécution de vos définitions de travaux Notebooks et Spark. L’installation de la bibliothèque dans votre pool Spark est fortement recommandée pour les exécutions de pipeline.
  • La gestion de la bibliothèque au niveau de la session peut vous aider à effectuer une itération rapide ou à gérer les modifications fréquentes de la bibliothèque. Toutefois, la stabilité de l’installation au niveau de la session n’est pas assurée. En outre, les commandes en ligne telles que %pip et %conda sont désactivées lors de l’exécution du pipeline. La gestion de la bibliothèque dans la session Notebook est recommandée pendant la phase de développement.

Gérer les packages d’espace de travail

Quand votre équipe développe des applications ou des modèles personnalisés, il est possible que vous développiez divers artefacts de code, comme des fichiers .whl, .jar ou tar.gz pour empaqueter votre code.

Important

  • tar.gz est uniquement pris en charge pour le langage R. Veuillez utiliser .whl comme package personnalisé Python.

Dans Azure Synapse, les packages d’espace de travail peuvent être des fichiers .whl ou .jar personnalisés ou privés. Vous pouvez charger ces packages sur votre espace de travail et les affecter par la suite à un pool Apache Spark serverless spécifique. Quand vous attribuez ces packages d’espace de travail, ils sont installés automatiquement sur toutes les sessions du pool Spark.

Pour en savoir plus sur la gestion des bibliothèques d’espace de travail, consultez Gérer les packages d’espace de travail.

Gérer les packages de pools

Dans certains cas, il se peut que vous souhaitiez normaliser les packages utilisés sur un pool Apache Spark donné. Cette standardisation peut se révéler utile si les mêmes packages sont généralement installés par plusieurs personnes de votre équipe.

En utilisant les fonctionnalités de gestion de pool d’Azure Synapse Analytics, vous pouvez configurer l’ensemble de bibliothèques par défaut à installer sur un pool Apache Spark serverless. Ces bibliothèques sont installées en plus du runtime de base.

Pour les bibliothèques Python, les pools Azure Synapse Spark utilisent Conda pour installer et gérer les dépendances de package Python. Vous pouvez spécifier les bibliothèques Python au niveau du pool en fournissant un fichier requirements.txt ou environment.yml . Le fichier config de cet environnement est utilisé chaque fois qu’une instance Spark est créée à partir de ce pool Spark. Vous pouvez également attacher les packages d’espace de travail à vos pools.

Pour en savoir plus sur ces fonctionnalités, consultez Gérer les packages de pool Spark.

Important

  • Si le package que vous installez est volumineux ou si son installation prend beaucoup de temps, cela peut affecter le temps de démarrage de l’instance Spark.
  • La modification de la version de PySpark, Python, Scala/Java, .NET ou Spark n’est pas prise en charge.

Gérer les dépendances pour les pools Azure Synapse Spark avec DEP

Notes

L’installation de packages à partir d’un référentiel public n’est pas prise en charge dans les espaces de travail DEP. Au lieu de cela, chargez toutes vos dépendances comme bibliothèques d’espace de travail et installez-les dans votre pool Spark.

Si vous rencontrez des difficultés pour identifier les dépendances nécessaires, effectuez les étapes suivantes :

  1. Exécutez le script suivant pour configurer un environnement Python local identique à l’environnement Azure Synapse Spark. Ce script nécessite un fichier YAML contenant une liste de toutes les bibliothèques incluses dans l’environnement Python par défaut pour Azure Synapse Spark. Vous trouverez ce fichier YAML dans la documentation pour des versions d’exécution spécifiques, comme Apache Spark 3.2 (fin de prise en charge annoncée) et Apache Spark 3.3 (disponibilité générale).

       # 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. Exécutez le script suivant pour identifier les dépendances nécessaires. Le script peut être utilisé pour transférer votre fichier requirements.txt, qui contient tous les packages et versions que vous envisagez d’installer dans le pool Spark 3.1 ou Spark 3.2. Il affiche les noms des nouveaux fichiers wheel/dépendances qui répondent à vos exigences de bibliothèque d’entrée.

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

    Notes

    Ce script liste uniquement les dépendances qui ne sont pas déjà présentes dans le pool Spark par défaut.

Gérer les packages avec étendue de session

Dans le cadre d’une analyse interactive des données ou d’activités de machine learning, il se peut que vous essayiez des packages plus récents ou que vous ayez besoin de packages qui ne sont pas disponibles actuellement dans votre pool Apache Spark. Au lieu de mettre à jour la configuration du pool, vous pouvez utiliser des packages avec étendue de session pour ajouter, gérer et mettre à jour les dépendances de session.

Les packages avec étendue de session permettent aux utilisateurs de définir les dépendances des packages au démarrage de leur session. Lorsque vous installez un package avec étendue de session, seule la session active peut accéder aux packages spécifiés. Ainsi, ces packages avec étendue de session n’ont aucun effet sur les autres sessions ou tâches qui utilisent le même pool Apache Spark. Par ailleurs, ces bibliothèques sont installées en plus des packages du runtime de base et de niveau pool.

Pour en savoir plus sur la gestion des packages avec étendue de session, consultez les articles suivants :

  • Packages de session Python : Au démarrage d’une session, fournissez un fichier environment.yml Conda pour installer davantage de packages Python à partir de référentiels courants. Vous pouvez aussi utiliser les commandes %pip et %conda pour gérer les bibliothèques dans les cellules de code de notebook.

    Important

    N’utilisez pas%%sh pour essayer d’installer des bibliothèques avec pip ou conda. Le comportement n’est pas le même qu’avec %pip ou %conda.

  • Packages de session Scala/Java : Au démarrage de votre session, fournissez une liste de fichiers .jar à installer à l’aide de %%configure.

  • Packages de session R : Dans votre session, vous pouvez installer des packages sur tous les nœuds de votre pool Spark en utilisant install.packages ou devtools.

Automatiser le processus de gestion de bibliothèque via des applets de commande Azure PowerShell et des API REST

Si votre équipe souhaite gérer des bibliothèques sans accéder aux interfaces utilisateur de gestion des packages, vous pouvez gérer les packages d’espace de travail et les mises à jour de package de niveau pool par le biais de cmdlets Azure PowerShell ou d’API REST pour Azure Synapse Analytics.

Pour plus d’informations, consultez les articles suivants :

Étapes suivantes