Partager via


Résoudre les erreurs d’installation de bibliothèque

Pour que vos applications disposent d’un code tiers ou généré en local, vous pouvez installer une bibliothèque sur l’un de vos pools Apache Spark serverless. Les packages répertoriés dans le fichier requirements.txt sont téléchargés à partir de PyPi au démarrage du pool. Ce fichier de configuration requise est utilisé chaque fois qu’une instance Spark est créée à partir de ce pool Spark. Une fois qu’une bibliothèque est installée pour un pool Spark, elle est disponible pour toutes les sessions utilisant le même pool.

Dans certains cas, il se peut qu’une bibliothèque n’apparaisse pas dans votre pool Apache Spark. Cela se produit généralement lorsqu’une erreur est survenue dans le fichier requirements.txt fourni ou dans les bibliothèques spécifiées. En cas d’erreur dans le processus d’installation de la bibliothèque, le pool Apache Spark restaure les bibliothèques spécifiées dans le runtime de base Synapse.

L’objectif de ce document est de fournir des problèmes courants et de vous aider à déboguer les erreurs d’installation de bibliothèque.

Forcer la mise à jour de votre pool Apache Spark

Lorsque vous mettez à jour les bibliothèques dans votre pool Apache Spark, ces modifications sont récupérées une fois que le pool a redémarré. Si vous avez des travaux actifs, ces travaux continuent à s’exécuter sur la version d’origine du pool Spark.

Vous pouvez forcer l’application des modifications en sélectionnant l’option Forcer les nouveaux paramètres. Ce paramètre met fin à toutes les sessions actives pour le pool Spark sélectionné. Une fois les sessions terminées, vous devez attendre le redémarrage du pool.

Ajouter des bibliothèques Python

Vérifier la progression de l’installation

Un travail Spark réservé au système démarre chaque fois qu’un pool est mis à jour avec un nouvel ensemble de bibliothèques. Ce travail Spark permet de surveiller l’état de l’installation de la bibliothèque. En cas d’échec de l’installation suite à des conflits avec la bibliothèque ou à d’autres problèmes, l’état précédent ou l’état par défaut du pool Spark est rétabli.

De plus, les utilisateurs peuvent consulter les journaux d’installation pour identifier les conflits de dépendance ou vérifier quelles bibliothèques ont été installées lors de la mise à jour du pool.

Pour afficher ces journaux :

  1. Accédez à la liste des applications Spark dans l’onglet Surveiller.
  2. Sélectionnez la tâche de l’application Spark du système qui correspond à la mise à jour de votre pool. Ces tâches système s’exécutent sous le titre SystemReservedJob-LibraryManagement. Capture d’écran mettant en évidence la tâche de bibliothèque réservée au système.
  3. Affichez les journaux du pilote et stdout.
  4. Parmi les résultats, vous verrez les journaux relatifs à l’installation de vos packages. Capture d’écran mettant en évidence les résultats de la tâche de bibliothèque réservée au système.

Suivi des échecs d’installation

Dans certains cas, les utilisateurs peuvent également inspecter les journaux d’installation complets disponibles dans le serveur d’historique Spark afin d’identifier les conflits de dépendances complexes. Les journaux disponibles via l’interface utilisateur Spark peuvent être tronqués. Il peut être utile d’accéder aux journaux d’installation complets via le serveur d’historique Spark dans des scénarios d’installation de bibliothèque complexes.

Pour afficher les journaux d’installation complets :

  1. Accédez à la liste des applications Spark dans l’onglet Surveiller.
  2. Sélectionnez le travail de l’application Spark du système qui correspond à la mise à jour du pool qui a échoué. Ces tâches système s’exécutent sous le titre SystemReservedJob-LibraryManagement. Capture d’écran mettant en évidence l’échec du travail de bibliothèque réservée au système.
  3. Sélectionnez l’option de serveur d’historique Spark mise en surbrillance qui ouvrirait la page des détails du serveur d’historique Spark dans un nouvel onglet. Capture d’écran mettant en évidence les informations sur l’échec du travail de bibliothèque réservée au système.
  4. Deux tentatives s’affichent sur cette page. Sélectionnez Tentative 1, comme indiqué ci-dessous. Capture d’écran mettant en évidence les informations de l’exécuteur sur la page du serveur d’historique Spark pour le travail de bibliothèque réservée au système qui a échoué.
  5. Dans la barre de navigation supérieure de la page du serveur d’historique Spark, basculez vers l’onglet Exécuteurs. Capture d’écran mettant en évidence les informations du travail sur la page du serveur d’historique Spark pour le travail de bibliothèque réservée au système qui a échoué.
  6. Téléchargez les fichiers journaux stdout et stderr pour accéder aux journaux complets d’erreurs et de sortie de la gestion des bibliothèques. Capture d’écran mettant en évidence la page du serveur d’historique Spark pour le travail de bibliothèque réservée au système qui a échoué.

Valider vos autorisations

Pour installer et mettre à jour des bibliothèques, vous devez disposer des autorisations Contributeur aux données Blob du stockage ou Propriétaire des données Blob du stockage sur le compte de stockage Azure Data Lake Storage Gen2 principal qui est lié à l’espace de travail Azure Synapse Analytics.

Pour confirmer que vous disposez de ces autorisations, vous pouvez exécuter le code suivant :

from pyspark.sql.types import StructType,StructField, StringType, IntegerType
data2 = [("James","Smith","Joe","4355","M",3000),
    ("Michael","Rose","Edward","40288","F",4000)
  ]

schema = StructType([ \
    StructField("firstname",StringType(),True), \
    StructField("middlename",StringType(),True), \
    StructField("lastname",StringType(),True), \
    StructField("id", StringType(), True), \
    StructField("gender", StringType(), True), \
    StructField("salary", IntegerType(), True) \
  ])
 
df = spark.createDataFrame(data=data2,schema=schema)

df.write.csv("abfss://<<ENTER NAME OF FILE SYSTEM>>@<<ENTER NAME OF PRIMARY STORAGE ACCOUNT>>.dfs.core.windows.net/validate_permissions.csv")

Si une erreur s’affiche, vous ne disposez probablement pas des autorisations requises. Pour découvrir comment obtenir les autorisations requises, consultez ce document: Attribuez des autorisations Contributeur aux données Blob du stockage ou Propriétaire des données Blob du stockage.

En outre, si vous exécutez un pipeline, le fichier MSI de l’espace de travail doit également posséder des autorisations Propriétaire des données Blob du stockage ou Contributeur aux données Blob du stockage. Pour apprendre à accorder cette autorisation à l’identité de votre espace de travail, consultez : Octroyez des autorisations à une identité managée de l’espace de travail.

Vérifier le fichier config de l’environnement

Vous pouvez utiliser le fichier config d’un environnement pour mettre à niveau l’environnement Conda. Ces formats de fichiers acceptables pour la gestion des pools Python sont listés dans les spécifications de l’environnement.

Il est important de noter les restrictions suivantes :

  • Le contenu du fichier de spécifications ne doit pas inclure de lignes ou de caractères vides supplémentaires.
  • Le runtime Synapse comprend un ensemble de bibliothèques qui sont préinstallées sur chaque pool Apache Spark serverless. Vous ne pouvez pas supprimer ou désinstaller les packages préinstallés sur le runtime de base.
  • La modification de la version de PySpark, Python, Scala/Java, .NET ou Spark n’est pas prise en charge.
  • Les bibliothèques Python avec étendue de session prennent uniquement en charge les fichiers avec une extension YML.

Valider des fichiers de roues

Les pools Apache Spark serverless Synapse sont basés sur la distribution Linux. Lors du téléchargement et de l’installation de fichiers de roues directement à partir de PyPI, veillez à sélectionner la version qui repose sur Linux et qui s’exécute sur la même version de Python que le pool Spark.

Important

Des packages personnalisés peuvent être ajoutés ou modifiés entre les sessions. Toutefois, vous devez attendre le redémarrage du pool et de la session pour voir le package mis à jour.

Rechercher des conflits de dépendance

En général, la résolution de dépendance Python peut être difficile à gérer. Pour vous aider à déboguer les conflits de dépendance localement, vous pouvez créer votre propre environnement virtuel basé sur le runtime Synapse et valider vos modifications.

Pour recréer l’environnement et valider vos mises à jour :

  1. Téléchargez le modèle pour recréer localement le runtime Synapse. Il peut y avoir de légères différences entre le modèle et l’environnement Synapse réel.

  2. Créez un environnement virtuel en suivant les instructions ci-dessous. Cet environnement vous permet de créer une installation Python isolée avec la liste de bibliothèques spécifiée.

    conda myenv create -f environment.yml
    conda activate myenv
    
  3. Utilisez pip install -r <provide your req.txt file> pour mettre à jour l’environnement virtuel avec vos packages spécifiés. Si l’installation génère une erreur, il peut s’agir d’un conflit entre ce qui est préinstallé dans le runtime de base Synapse et ce qui est spécifié dans le fichier d’exigences fourni. Ces conflits de dépendance doivent être résolus afin d’extraire les bibliothèques mises à jour sur votre pool Apache Spark serverless.

Important

Des problèmes peuvent survenir lors de l’utilisation de pip et conda ensemble. Si vous combinez pip et conda, nous vous invitons à suivre les meilleures pratiques recommandées.

Étapes suivantes