Gestion des bibliothèques R

Les bibliothèques fournissent du code réutilisable que vous pouvez inclure dans vos programmes ou projets pour Microsoft Fabric Spark.

Microsoft Fabric prend en charge un runtime R avec de nombreux packages R open source populaires, y compris TidyVerse, préinstallés. Lorsqu’une instance Spark démarre, ces bibliothèques sont incluses automatiquement et peuvent être utilisées immédiatement dans les notebooks ou les définitions de travaux Spark.

Il est possible que vous deviez mettre à jour vos bibliothèques R pour différentes raisons. Par exemple, l’une de vos dépendances principales a publié une nouvelle version, ou votre équipe a créé un package personnalisé dont vous avez besoin dans vos clusters Spark.

Vous pouvez inclure deux types de bibliothèques en fonction de votre scénario :

  • Les bibliothèques de flux font référence à celles résidant dans des sources ou des référentiels publics, tels que CRAN ou GitHub.

  • Les bibliothèques personnalisées sont le code créé par vous ou votre organisation, .tar.gz peut être géré par le biais des portails de gestion des bibliothèques.

Deux niveaux de packages sont installés sur Microsoft Fabric :

  • Environnement : gérer les bibliothèques à travers un environnement pour réutiliser le même jeu de bibliothèques à travers plusieurs notebooks ou tâches.

  • 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.

Résumé des comportements actuels de gestion des bibliothèques R disponibles :

Type de bibliothèque Installation de l’environnement Installation au niveau de la session
Flux R (CRAN) Non pris en charge Pris en charge
R personnalisé Prise en charge Pris en charge

Prérequis

Bibliothèques R au niveau de la session

Lors de l’analyse interactive des données ou du 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 espace de travail. Au lieu de mettre à jour les paramètres de l’espace de travail, vous pouvez utiliser des packages avec étendue de session pour ajouter, gérer et mettre à jour les dépendances de session.

  • Lorsque vous installez des bibliothèques avec étendue de session, seul le notebook actif peut accéder aux bibliothèques spécifiées.
  • Ces bibliothèques n’ont aucune incidence sur les autres sessions ou tâches qui utilisent le même pool Spark.
  • Ces bibliothèques sont installées en plus du runtime de base et des bibliothèques de pools.
  • Les bibliothèques de notebooks sont prioritaires.
  • Les bibliothèques R délimitées à la session ne sont pas conservées entre les sessions. Ces bibliothèques sont installées au début de chaque session lorsque les commandes d’installation associées sont exécutées.
  • Les bibliothèques R délimitées à la session sont automatiquement installées sur les nœuds worker et de pilote.

Remarque

Les commandes de gestion des bibliothèques R sont désactivées lors de l’exécution de travaux de pipeline. Si vous souhaitez installer un package dans un pipeline, vous devez utiliser des fonctionnalités de gestion des bibliothèques au niveau de l’espace de travail.

Installer des packages R à partir de CRAN

Vous pouvez facilement installer une bibliothèque R à partir de CRAN.

# install a package from CRAN
install.packages(c("nycflights13", "Lahman"))

Vous pouvez également utiliser des instantanés CRAN en tant que référentiel pour vous assurer de télécharger la même version du package à chaque fois.

# install a package from CRAN snapsho
install.packages("highcharter", repos = "https://cran.microsoft.com/snapshot/2021-07-16/")

Installer des packages R à l’aide de devtools

La bibliothèque devtools simplifie le développement de packages pour accélérer les tâches courantes. Cette bibliothèque est installée dans le runtime Microsoft Fabric par défaut.

Vous pouvez utiliser devtools pour spécifier une version spécifique d’une bibliothèque à installer. Ces bibliothèques sont installées sur tous les nœuds du cluster.

# Install a specific version. 
install_version("caesar", version = "1.0.0")

De même, vous pouvez installer une bibliothèque directement à partir de GitHub.

# Install a GitHub library. 

install_github("jtilly/matchingR")

Actuellement, les fonctions devtools suivantes sont prises en charge dans Microsoft Fabric :

Command Description
install_github() Installe un package R à partir de GitHub
install_gitlab() Installe un package R à partir de GitLab
install_bitbucket() Installe un package R à partir de BitBucket
install_url() Installe un package R à partir d’une URL arbitraire
install_git() Installe à partir d’un référentiel Git arbitraire
install_local() Installe à partir d’un fichier local sur le disque
install_version() Installe à partir d’une version spécifique sur CRAN

Installer des bibliothèques R personnalisées

Pour utiliser une bibliothèque personnalisée au niveau de la session, vous devez d’abord la charger sur un lakehouse attaché.

  1. Sur le côté gauche, sélectionnez Ajouter pour ajouter un lakehouse existant ou créer un lakehouse.

    Capture d’écran de l’ajout d’un lakehouse à votre notebook.

  2. Pour ajouter des fichiers à ce lakehouse, sélectionnez votre espace de travail, puis sélectionnez le lakehouse.

    Capture d’écran montrant comment accéder à votre lakehouse pour ajouter des fichiers.

  3. Cliquez avec le bouton droit ou sélectionnez « ... » en regard de Fichiers pour charger votre fichier .tar.gz.

    Capture d’écran montrant comment charger votre fichier dans le dossier Fichiers du lakehouse.

  4. Après le chargement, revenez à votre notebook. Utilisez la commande suivante pour installer la bibliothèque personnalisée dans votre session :

    install.packages("filepath/filename.tar.gz", repos = NULL, type = "source")
    

Voir les bibliothèques installées

Interrogez toutes les bibliothèques installées dans votre session à l’aide de la commande library.

# query all the libraries installed in current session
library()

Utilisez la fonction packageVersion pour vérifier la version de la bibliothèque :

# check the package version
packageVersion("caesar")

Supprimer un package R d’une session

Vous pouvez utiliser la fonction detach pour supprimer une bibliothèque de l’espace de noms. Ces bibliothèques restent sur disque jusqu’à ce qu’elles soient chargées à nouveau.

# detach a library

detach("package: caesar")

Pour supprimer un package à l’étendue d’une session d’un notebook, utilisez la commande remove.packages(). Cette modification de bibliothèque n’a aucun impact sur les autres sessions sur le même cluster. Les utilisateurs ne peuvent pas désinstaller ni supprimer des bibliothèques intégrées du runtime Microsoft Fabric par défaut.

Remarque

Vous ne pouvez pas supprimer de packages principaux comme SparkR, SparklyR ou R.

remove.packages("caesar")

Bibliothèques R délimitées à une session et SparkR

Des bibliothèques à l’étendue du notebook sont disponibles sur les workers SparkR.

install.packages("stringr")
library(SparkR)

str_length_function <- function(x) {
  library(stringr)
  str_length(x)
}

docs <- c("Wow, I really like the new light sabers!",
               "That book was excellent.",
               "R is a fantastic language.",
               "The service in this restaurant was miserable.",
               "This is neither positive or negative.")

spark.lapply(docs, str_length_function)

Bibliothèques R délimitées à une session et sparklyr

Avec spark_apply() dans sparklyr, vous pouvez utiliser n’importe quel package R à l’intérieur de Spark. Par défaut, dans sparklyr::spark_apply(), l’argument packages est défini sur la valeur FALSE. Cela copie les bibliothèques dans les libPaths actuels vers les Workers, ce qui vous permet de les importer et de les utiliser sur les Workers. Par exemple, vous pouvez exécuter ce qui suit pour générer un message chiffré en Caesar avec sparklyr::spark_apply() :

install.packages("caesar", repos = "https://cran.microsoft.com/snapshot/2021-07-16/")

spark_version <- sparkR.version()
config <- spark_config()
sc <- spark_connect(master = "yarn", version = spark_version, spark_home = "/opt/spark", config = config)

apply_cases <- function(x) {
  library(caesar)
  caesar("hello world")
}
sdf_len(sc, 5) %>%
  spark_apply(apply_cases, packages=FALSE)

En savoir plus sur les fonctionnalités R :