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 ripristinare le librerie in seguito 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()
. Imposta libPaths
per cambiare il percorso di download predefinito nel percorso della tua 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 renv
'API 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 il lockfile
dal file system locale in DBFS, in cui persiste anche quando il cluster termina o viene riavviato.
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 nelle note di rilascio 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 Rserve
dal ripristino del SparkR
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
.