Gérer les bibliothèques Apache Spark dans Microsoft Fabric

Une bibliothèque est une collection de codes pré-écrits que les développeurs peuvent importer pour fournir une fonctionnalité. L'utilisation de bibliothèques permet de gagner du temps et de réduire les efforts en évitant d'écrire du code à partir de zéro pour effectuer des tâches courantes. En revanche, il convient d'importer la bibliothèque et d'utiliser ses fonctions et ses classes pour atteindre la fonctionnalité souhaitée. Microsoft Fabric fournit plusieurs mécanismes pour vous aider à gérer et à utiliser les bibliothèques.

  • Bibliothèques intégrées : chaque runtime Fabric Spark fournit un ensemble complet de bibliothèques préinstallées populaires. Vous trouverez la liste complète des bibliothèques prédéfinies dans Fabric Spark Runtime.
  • Bibliothèques publiques : les bibliothèques publiques proviennent de dépôts tels que PyPI et Conda, actuellement pris en charge.
  • Bibliothèques personnalisées : les bibliothèques personnalisées font référence au code que vous ou votre organisation créez. Fabric les prend en charge dans les formats .whl, .jar et .tar.gz. Fabric prend en charge .tar.gz uniquement pour le langage R. Pour les bibliothèques personnalisées Python, utilisez le format .whl.

Gestion de bibliothèques dans les paramètres de l’espace de travail

Important

La gestion des bibliothèques au niveau de l’espace de travail n’est plus prise en charge. Pour migrer les bibliothèques de l'espace de travail et les propriétés Spark vers un environnement par défaut, consultez Migrer les bibliothèques de l'espace de travail et les propriétés Spark.

Récapitulatif des bonnes pratiques de gestion des bibliothèques

Les scénarios suivants décrivent les meilleures pratiques.

Scénario 1 : l'administrateur définit les bibliothèques par défaut pour l'espace de travail

Pour définir les bibliothèques par défaut, vous devez être l'administrateur de l'espace de travail. En tant qu'administrateur, vous pouvez effectuer les tâches suivantes :

  1. Créer un environnement
  2. Installer les bibliothèques requises dans l'environnement
  3. Définir cet environnement comme espace de travail par défaut

Les Notebooks et les définitions du travail Spark dans l'espace de travail sont attachés aux paramètres de l'espace de travail. Ils démarrent les sessions avec les bibliothèques installées dans l'environnement par défaut de l'espace de travail.

Scénario 2 : conserver des spécifications de bibliothèque pour un ou plusieurs articles de code

Si vous souhaitez conserver les spécifications de la bibliothèque, installez les bibliothèques dans un environnement et attachez-les aux éléments de code.

L'un des avantages de cette approche est qu'elle permet d'éviter d'exécuter en permanence le code qui nécessite des bibliothèques communes. Une fois bien installées dans l'environnement, les bibliothèques sont efficaces dans toutes les sessions Spark si l'environnement est attaché.

Un autre avantage est que l'approche permet une granularité de configuration de la bibliothèque inférieure au niveau de l'espace de travail. Un même environnement peut être attaché à plusieurs artefacts de code. Si vous avez un sous-ensemble de notebooks ou de définitions de travail Spark dans un espace de travail qui nécessitent les mêmes bibliothèques, attachez-les au même environnement. Un administrateur, un membre ou un contributeur dans un espace de travail peut créer, modifier et attacher l'environnement.

Scénario 3 : installation incluse dans une exécution interactive

Si vous souhaitez utiliser une seule fois, dans un Notebook interactif, une bibliothèque qui n'est pas installée, l'installation incluse est l'option la plus pratique. Les commandes incluses de Fabric vous permettent de faire fonctionner la bibliothèque dans la session Spark du Notebook en cours. La bibliothèque ne persiste pas d'une session à l'autre.

Les utilisateurs qui sont autorisés à exécuter le Notebook peuvent installer d'autres bibliothèques dans la session Spark.

Récapitulatif des types de bibliothèque pris en charge

Type de la bibliothèque Gestion des bibliothèques d’environnement Installation incluse
Python Public (PyPI & Conda) Prise en charge Prise en charge
Python personnalisé (.whl) Prise en charge Prise en charge
R Public (CRAN) Non pris en charge Prise en charge
R personnalisé (.tar.gz) Prise en charge Prise en charge
Jar Pris en charge en tant que bibliothèque personnalisée Non pris en charge

Important

La bibliothèque .jar est actuellement limitée.

  • Pour les utilisateurs de Scala, le fichier .jar peut être facilement installé dans un environnement. Toutefois, il n'est pas efficace pour vos sessions Spark/Scala. L'installation remplace la bibliothèque prédéfinie par une autre bibliothèque. Le nouveau .jar fonctionne dans les sessions.
  • Pour les utilisateurs Python, tous les fichiers .jar ne sont actuellement pas pris en charge dans un environnement. Ils peuvent facilement être installés dans un environnement, mais ils ne sont pas efficaces dans les sessions PySpark.
  • Vous pouvez installer les fichiers .jar dans la session du Notebook par exemple.

Installation incluse

Les commandes incluses prennent en charge les bibliothèques Python et les bibliothèques R.

Installation incluse dans Python

L'interpréteur Python redémarre pour appliquer le changement de bibliothèques. Toutes les variables définies avant l'exécution de la cellule de commande sont perdues. Nous vous recommandons vivement de placer toutes les commandes d'ajout, de suppression ou de mise à jour des packages Python au début de votre Notebook.

Les commandes en ligne pour la gestion des bibliothèques Python sont désactivées par défaut dans l'exécution du pipeline notebook. Si vous souhaitez activer %pip install pour le pipeline, ajoutez "_inlineInstallationEnabled" en tant que paramètre bool égal à True dans les paramètres de l'activité du notebook.

Capture d'écran montrant la configuration de l'activation de pip install pour l'exécution de pipeline notebook.

Remarque

Le %pip install peut parfois donner des résultats incohérents. Il est recommandé d'installer la bibliothèque dans un environnement et de l'utiliser dans le pipeline.

Nous vous recommandons %pip à la place de !pip. !pip est une commande shell prédéfinie dans IPython, qui présente les limitations suivantes :

  • !pip n'installe de package que sur le nœud du gestionnaire, et non sur les nœuds de l'Exécuteur.
  • Les packages qui s'installent via !pip n'affectent pas les conflits avec les packages prédéfinis. De même, les packages qui sont déjà importés dans un Notebook ne sont pas affectés.

Toutefois, %pip gère ces scénarios. Les bibliothèques installées via %pip sont disponibles à la fois sur les nœuds du gestionnaire et de l'Exécuteur. Elles sont toujours actives même si la bibliothèque est déjà importée.

Conseil

La commande %conda install prend généralement plus de temps que la commande %pip install pour installer de nouvelles bibliothèques Python. Elle vérifie l'ensemble des dépendances et résout les conflits.

Vous pouvez utiliser %conda install pour augmenter la fiabilité et la stabilité. Vous pouvez utiliser %pip install si vous êtes sûr que la bibliothèque que vous souhaitez installer est compatible avec les bibliothèques préinstallées dans l'environnement runtime.

Pour toutes les commandes incluses et disponibles dans Python et toutes les précisions nécessaires, consultez Commandes %pip et Commandes %conda.

Gérer les bibliothèques publiques Python via l'installation incluse

Dans cet exemple, nous verrons comment utiliser les commandes incluses pour gérer les bibliothèques. Supposons que vous souhaitiez utiliser altair, une bibliothèque de visualisation puissante pour Python, pour une exploration de données ponctuelle. Supposons que la bibliothèque n'est pas installée dans votre espace de travail. L'exemple suivant utilise les commandes conda pour illustrer les étapes.

Vous pouvez utiliser des commandes incluses pour activer altair sur votre session de Notebook sans affecter les autres sessions du Notebook ou d'autres articles.

  1. Exécutez les commandes suivantes dans une cellule de code du Notebook. La première commande installe la bibliothèque altair. Installez également vega_datasets, qui contient un modèle sémantique que vous pouvez utiliser pour visualiser.

    %conda install altair          # install latest version through conda command
    %conda install vega_datasets   # install latest version through conda command
    

    La production de la cellule indique le résultat de l'installation.

  2. Importez le package et le modèle sémantique en exécutant le code suivant dans une autre cellule du Notebook.

    import altair as alt
    from vega_datasets import data
    
  3. Vous pouvez à présent reproduire la bibliothèque altair à l'échelle de la session.

    # load a simple dataset as a pandas DataFrame
    cars = data.cars()
    alt.Chart(cars).mark_point().encode(
    x='Horsepower',
    y='Miles_per_Gallon',
    color='Origin',
    ).interactive()
    

Gérer les bibliothèques personnalisées Python grâce à l'installation incluse

Vous pouvez charger vos bibliothèques personnalisées Python dans le dossier Fichier du lakehouse attaché à votre notebook. Accédez à votre lakehouse, sélectionnez l’icône d’ellipses ... dans le dossier Fichier, puis chargez la bibliothèque personnalisée.

Après le téléchargement, utilisez la commande suivante pour installer la bibliothèque personnalisée dans votre session Notebook.

# install the .whl through pip command
%pip install /lakehouse/default/Files/wheel_file_name.whl             

Installation incluse R

Pour gérer les bibliothèques R, Fabric prend en charge les commandes install.packages(), remove.packages() et devtools::. Pour toutes les commandes incluses R disponibles et toutes les précisions nécessaires, consultez la commande install.packages et la commande remove.package.

Gérer les bibliothèques publiques R grâce à l'installation incluse

Suivez cet exemple pour découvrir les étapes de l'installation d'une bibliothèque publique R.

Pour installer une bibliothèque de flux R :

  1. Changez la langue de travail en SparkR (R) dans le ruban du Notebook.

  2. Installez la bibliothèque caesar en exécutant la commande suivante dans une cellule de Notebook.

    install.packages("caesar")
    
  3. Vous pouvez maintenant vous familiariser avec la bibliothèque caesar limitée à la session à l’aide d’un travail Spark.

    library(SparkR)
    sparkR.session()
    
    hello <- function(x) {
    library(caesar)
    caesar(x)
    }
    spark.lapply(c("hello world", "good morning", "good evening"), hello)
    

Gérer les bibliothèques Jar via l'installation incluse

Les fichiers .jar sont pris en charge au niveau des sessions de notebook avec la commande suivante.

%%configure -f
{
    "conf": {
        "spark.jars": "abfss://<<Lakehouse prefix>>.dfs.fabric.microsoft.com/<<path to JAR file>>/<<JAR file name>>.jar",
    }
}        

La cellule de code utilise le stockage de Lakehouse comme exemple. Dans l'explorateur de Notebook, vous pouvez copier le chemin d'accès complet du fichier ABFS et le remplacer dans le code. Capture d'écran du chemin d'accès ABFS.