renv
su Azure Databricks
renv è un pacchetto R che consente agli utenti di gestire le dipendenze R specifiche del notebook.
Usando renv
, è possibile creare e gestire l'ambiente della libreria R per il progetto, salvare lo stato di queste librerie in un lockfile
e quindi ripristinare le librerie in base alle esigenze. Insieme, questi strumenti consentono di rendere i progetti più isolati, portatili e riproducibili.
Flusso di lavoro di base renv
Contenuto della sezione:
- Installare
renv
- Inizializzare la
renv
sessione con librerie R preinstallate - Usare
renv
per installare pacchetti aggiuntivi - Usare
renv
per salvare l'ambiente del notebook R in DBFS - Reinstallare un
renv
ambiente dato dalockfile
DBFS
Installare renv
È possibile installare renv
come libreria con ambito cluster o come libreria con ambito notebook. Per eseguire l'installazione renv
come libreria con ambito notebook, usare:
require(devtools)
install_version(
package = "renv",
repos = "http://cran.us.r-project.org"
)
Databricks consiglia di usare uno snapshot CRAN come repository per correggere la versione del pacchetto.
Inizializzare la renv
sessione con librerie R preinstallate
Il primo passaggio quando si usa renv
consiste nell'inizializzare una sessione usando renv::init()
. Impostare libPaths
per modificare il percorso di download predefinito in modo che sia il percorso della libreria con ambito notebook R.
renv::init(settings = list(external.libraries=.libPaths()))
.libPaths(c(.libPaths()[2], .libPaths())
Usare renv
per installare pacchetti aggiuntivi
È ora possibile usare l'API renv
per installare e rimuovere pacchetti R. Ad esempio, per installare la versione più recente di digest
, eseguire quanto segue all'interno di una cella del notebook.
renv::install("digest")
Per installare una versione precedente di digest
, eseguire quanto segue all'interno di una cella del notebook.
renv::install("digest@0.6.18")
Per eseguire l'installazione digest
da GitHub, eseguire quanto segue all'interno di una cella del notebook.
renv::install("eddelbuettel/digest")
Per installare un pacchetto da Bioconductor, eseguire quanto segue all'interno di una cella del notebook.
# (note: requires the BiocManager package)
renv::install("bioc::Biobase")
Si noti che l'API renv::install
usa la cache renv.
Usare renv
per salvare l'ambiente del notebook R in DBFS
Eseguire il comando seguente una volta prima di salvare l'ambiente.
renv::settings$snapshot.type("all")
Viene impostato renv
su snapshot di tutti i pacchetti installati in libPaths
, non solo quelli attualmente usati nel notebook. Per altre informazioni, vedere la documentazione di renv.
A questo punto è possibile eseguire quanto segue all'interno di una cella del notebook per salvare lo stato corrente dell'ambiente.
renv::snapshot(lockfile="/dbfs/PATH/TO/WHERE/YOU/WANT/TO/SAVE/renv.lock", force=TRUE)
Viene aggiornato lockfile
acquisendo tutti i pacchetti installati in libPaths
. Sposta anche lockfile
il file system locale in DBFS, in cui viene salvato in modo permanente anche se il cluster termina o riavvia.
Reinstallare un renv
ambiente dato da lockfile
DBFS
Prima di tutto, assicurarsi che il nuovo cluster esegua una versione di Databricks Runtime identica a quella in cui è stato creato per la prima volta l'ambiente renv
. In questo modo si garantisce che i pacchetti R preinstallati siano identici. È possibile trovare un elenco di questi elementi nelle note sulla versione di ogni runtime. Dopo aver installato renv, eseguire quanto segue all'interno di una cella del 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"))
Questo copia da lockfile
DBFS nel file system locale e quindi ripristina tutti i pacchetti specificati in lockfile
.
Nota
Per evitare errori di repository mancanti, escludere i pacchetti e SparkR
dal ripristino del Rserve
pacchetto. Entrambi questi pacchetti sono preinstallati in tutti i runtime.
renv
Cache
Una funzionalità molto utile di è la cache globale dei renv
pacchetti, condivisa in tutti i renv
progetti nel cluster. Consente di velocizzare i tempi di installazione e di risparmiare spazio su disco. La renv
cache non memorizza nella cache i pacchetti scaricati tramite l'API devtools
o install.packages()
con argomenti aggiuntivi diversi da pkgs
.