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 :
- Installez
renv
- Initialisation d’une session
renv
avec des bibliothèques R préinstallées - Installation de packages supplémentaires avec
renv
- Enregistrement d’un environnement de notebook R sur DBFS avec
renv
- Réinstallation d’un environnement
renv
en fonction d’unlockfile
à partir de DBFS
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
.