Aller au contenu principal

renv sur Databricks

renv est un package R qui permet aux utilisateurs de gérer les dépendances R spécifiques au Notebook.

En utilisant renv, vous pouvez créer et gérer l'environnement de bibliothèque R pour votre projet, enregistrer l'état de ces bibliothèques dans un lockfile, puis restaurer les bibliothèques selon les besoins. Ces outils peuvent aider à rendre les projets plus isolés, portables et reproductibles.

Installer renv

Vous pouvez installer renv en tant que bibliothèque limitée au cluster ou en tant que bibliothèque limitée au Notebook. Pour installer renv en tant que bibliothèque limitée au Notebook, utilisez :

R
require(devtools)

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

Databricks recommande d'utiliser un instantané CRAN comme repository pour fixer la version du package.

Initialisez la session renv avec des bibliothèques R préinstallées.

La première étape lors de l'utilisation de renv consiste à initialiser une session à l'aide de renv::init(). Définissez libPaths pour modifier l'emplacement de download par default pour qu'il corresponde à votre chemin de bibliothèque R étendue au Notebook.

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

Utilisez renv pour installer des packages supplémentaires

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 ce qui suit dans une cellule de notebook.

R
renv::install("digest")

Pour installer une ancienne version de digest, exécutez ce qui suit dans une cellule de Notebook.

R
renv::install("digest@0.6.18")

Pour installer digest à partir de GitHub, exécutez ce qui suit dans une cellule de notebook.

R
renv::install("eddelbuettel/digest")

Pour installer un package depuis Bioconductor, exécutez ce qui suit dans une cellule de Notebook.

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

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

Utilisez renv pour enregistrer votre environnement de Notebook R dans DBFS

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

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

Cela configure renv pour instantanéiser tous les packages qui sont installés dans libPaths, et pas seulement ceux qui sont actuellement utilisés dans le Notebook. Pour en savoir plus, consultez la documentation renv.

Vous pouvez maintenant exécuter ce qui suit dans une cellule de Notebook pour enregistrer l'état actuel de votre environnement.

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

Cela met à jour le lockfile en capturant tous les packages installés sur libPaths. Il déplace également votre lockfile du système de fichiers local vers DBFS, où il persiste même si votre cluster s'arrête ou redémarre.

Réinstaller un environnement renv étant donné un lockfile à partir de DBFS

Tout d'abord, assurez-vous 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. Ceci garantit que les packages R préinstallés sont identiques. Vous trouverez une liste de ces éléments dans les notes de publication de chaque runtime. Après avoir installé renv, exécutez ce qui suit dans une cellule de Notebook.

R
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"))

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

remarque

Pour éviter les erreurs de repository manquant, excluez les packages Rserve et SparkR de la restauration de package. Ces deux packages sont préinstallés dans tous les runtimes.

renv Cache

Une fonctionnalité très utile de renv est son cache de packages global, qui est partagé entre tous les projets renv sur le cluster. Cela accélère les temps d'installation et économise de l'espace disque. Le cache renv ne met pas en cache les packages téléchargés via l’API devtools ou install.packages() avec des arguments supplémentaires autres que pkgs.