Condividi tramite


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 lockfilee 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

È 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 renvper 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.