Partager via


renv sur Azure Databricks

renv est un package R qui permet aux utilisateurs de gérer les dépendances R propres au notebook.

Avec renv, vous pouvez créer et gérer l’environnement de bibliothèque R de votre projet, enregistrer l’état de ces bibliothèques dans un lockfile et si besoin les restaurer par la suite. Ensemble, ces outils peuvent aider à rendre les projets plus isolés, portables et reproductibles.

Flux de travail renv de base

Dans cette section :

Installation renv

Vous pouvez installer renv sous la forme d’une bibliothèque étendue au cluster ou d’une bibliothèque étendue au notebook. Pour installer renv comme bibliothèque étendue au notebook, utilisez la commande suivante :

require(devtools)

install_version(
  package = "renv",
  repos   = "http://cran.us.r-project.org"
)

Databricks recommande d’utiliser un instantané CRAN comme référentiel pour corriger la version du package.

Initialisation d’une session renv avec des bibliothèques R préinstallées

La première étape pour utiliser renv consiste à initialiser une session à l’aide de renv::init(). Définissez libPaths pour remplacer l’emplacement de téléchargement par défaut par le chemin de votre bibliothèque étendue au notebook.

renv::init(settings = list(external.libraries=.libPaths()))
.libPaths(c(.libPaths()[2], .libPaths())

Installation de packages supplémentaires avec renv

Vous pouvez maintenant utiliser l’API de renv pour installer et supprimer des packages R. Par exemple, pour installer la dernière version de digest, exécutez la commande suivante à l’intérieur d’une cellule de notebook.

renv::install("digest")

Pour installer une ancienne version de digest, exécutez la commande suivante à l’intérieur d’une cellule de notebook.

renv::install("digest@0.6.18")

Pour installer digest à partir de GitHub, exécutez la commande suivante dans une cellule de notebook.

renv::install("eddelbuettel/digest")

Pour installer un package à partir de Bioconductor, exécutez la commande suivante à l’intérieur d’une cellule de notebook.

# (note: requires the BiocManager package)
renv::install("bioc::Biobase")

Notez que l’API renv::install utilise le cache renv.

Enregistrement d’un environnement de notebook R sur DBFS avec renv

Exécutez une fois la commande suivante avant d’enregistrer l’environnement.

renv::settings$snapshot.type("all")

Elle définit renv de façon à prendre une capture instantanée de tous les packages installés dans libPaths, et pas seulement ceux qui sont actuellement utilisés dans le notebook. Pour plus d’informations, consultez la documentation de renv.

Vous pouvez maintenant exécuter la commande suivante dans une cellule de notebook pour enregistrer l’état actuel de votre environnement.

renv::snapshot(lockfile="/dbfs/PATH/TO/WHERE/YOU/WANT/TO/SAVE/renv.lock", force=TRUE)

Elle met à jour le lockfile en capturant tous les packages installés sur libPaths. Elle déplace également votre lockfile du système de fichiers local vers DBFS, où il sera conservé même en cas d’arrêt ou de redémarrage de votre cluster.

Réinstallation d’un environnement renv en fonction d’un lockfile à partir de DBFS

Tout d’abord, vérifiez que votre nouveau cluster exécute la même version de Databricks Runtime que celle sur laquelle vous avez créé l’environnement renv pour la première fois. Cela permet de s’assurer que les packages R préinstallés sont identiques. Vous trouverez la liste de ces derniers dans les notes de publication de chaque runtime. Une fois que vous avez installé renv, exécutez la commande suivante dans une cellule de notebook.

renv::init(settings = list(external.libraries=.libPaths()))
.libPaths(c(.libPaths()[2], .libPaths()))
renv::restore(lockfile="/dbfs/PATH/TO/WHERE/YOU/SAVED/renv.lock", exclude=c("Rserve", "SparkR"))

Elle copie votre lockfile de DBFS dans le système de fichiers local, puis restaure tous les packages spécifiés dans le lockfile.

Notes

Pour éviter des erreurs de référentiel manquant, excluez les packages Rserve et SparkR de la restauration. Ils sont préinstallés dans tous les runtimes.

renv Cache

L’une des fonctionnalités très utiles de renv est son cache de packages global, qui est partagé entre tous les projets renv du cluster. Elle accélère l’installation et économise de l’espace disque. Le cache renv ne comprend pas les packages téléchargés par le biais ni de l’API devtools ni de install.packages() avec des arguments supplémentaires autres que pkgs.