renv
in Azure Databricks
renv ist ein R-Paket, mit dem Benutzer R-Abhängigkeiten für das Notebook verwalten können.
Mit renv
können Sie die R-Bibliotheksumgebung für Ihr Projekt erstellen und verwalten, den Zustand dieser Bibliotheken in lockfile
speichern, und die Bibliotheken später bei Bedarf wiederherstellen. Zusammen können diese Tools dazu beitragen, dass Projekte besser isoliert, portierbar und reproduzierbar sind.
Grundlegender renv
-Workflow
Inhalt dieses Abschnitts:
- Installieren Sie
renv
. - Initialisieren einer
renv
-Sitzung mit vorinstallierten R-Bibliotheken - Verwendung von
renv
zur Installation zusätzlicher Pakete - Verwendung von
renv
zum Speichern Ihrer R-Notebook-Umgebung auf DBFS - Neuinstallation einer
renv
-Umgebung angesichts vonlockfile
aus DBFS
Installieren renv
Sie können renv
als clusterspezifische Bibliothek oder als notebookspezifische Bibliothek installieren. Um renv
als notebookspezifische Bibliothek zu installieren, verwenden Sie:
require(devtools)
install_version(
package = "renv",
repos = "http://cran.us.r-project.org"
)
Databricks empfiehlt, eine CRAN-Momentaufnahme als Repository zu verwenden, um die Paketversion zu korrigieren.
Initialisieren einer renv
-Sitzung mit vorinstallierten R-Bibliotheken
Der erste Schritt bei der Verwendung von renv
ist das Initialisieren einer Sitzung mithilfe von renv::init()
. Legen Sie libPaths
fest, um den standardmäßigen Speicherort für das Herunterladen so zu ändern, dass er dem Pfad zu Ihrer notebookspezifischen R-Bibliothek entspricht.
renv::init(settings = list(external.libraries=.libPaths()))
.libPaths(c(.libPaths()[2], .libPaths())
Verwendung von renv
zur Installation zusätzlicher Pakete
Sie können nun die API von renv
verwenden, um R-Pakete zu installieren und zu entfernen. Um beispielsweise die neueste Version von digest
zu installieren, führen Sie den folgenden Befehl innerhalb einer Notebook-Zelle aus.
renv::install("digest")
Um eine alte Version von digest
zu installieren, führen Sie Folgendes in einer Notebook-Zelle aus.
renv::install("digest@0.6.18")
Um digest
von GitHub zu installieren, führen Sie Folgendes in einer Notebook-Zelle aus.
renv::install("eddelbuettel/digest")
Um ein Paket von Bioconductor zu installieren, führen Sie Folgendes in einer Notebook-Zelle aus.
# (note: requires the BiocManager package)
renv::install("bioc::Biobase")
Beachten Sie, dass die renv::install
-API den renv-Cache verwendet.
Verwendung von renv
zum Speichern Ihrer R-Notebook-Umgebung auf DBFS
Führen Sie den folgenden Befehl einmal aus, bevor Sie die Umgebung speichern.
renv::settings$snapshot.type("all")
Dadurch wird renv
so eingestellt, dass eine Momentaufnahme aller Pakete erstellt wird, die in libPaths
installiert sind, nicht nur derjenigen, die derzeit im Notebook verwendet werden. Weitere Informationen finden Sie in der renv-Dokumentation.
Nun können Sie Folgendes innerhalb einer Notebook-Zelle ausführen, um den aktuellen Zustand Ihrer Umgebung zu speichern.
renv::snapshot(lockfile="/dbfs/PATH/TO/WHERE/YOU/WANT/TO/SAVE/renv.lock", force=TRUE)
Dadurch wird lockfile
aktualisiert, indem alle auf libPaths
installierten Pakete erfasst werden. Außerdem wird lockfile
vom lokalen Dateisystem ins DBFS verschoben, wo es auch dann erhalten bleibt, wenn Ihr Cluster beendet oder neu gestartet wird.
Neuinstallation einer renv
-Umgebung angesichts von lockfile
aus DBFS
Vergewissern Sie sich zunächst, dass auf Ihrem neuen Cluster eine identische Databricks Runtime-Version läuft wie auf dem Cluster, auf dem Sie die renv
-Umgebung zuerst erstellt haben. Dadurch wird sichergestellt, dass die vorinstallierten R-Pakete identisch sind. Eine Liste davon finden Sie in den Versionshinweisen der jeweiligen Runtime. Nachdem Sie renv installiert haben, führen Sie Folgendes in einer Notebook-Zelle aus.
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"))
Dadurch wird lockfile
aus dem DBFS in das lokale Dateisystem kopiert, und alle in lockfile
angegebenen Pakete werden wiederhergestellt.
Hinweis
Um Fehler durch fehlende Repositorys zu vermeiden, schließen Sie die Pakete Rserve
und SparkR
von der Wiederherstellung aus. Beide Pakete sind in allen Runtimes vorinstalliert.
renv
Cache
Eine sehr nützliche Funktion von renv
ist sein globaler Paketcache, der von allen renv
-Projekten auf dem Cluster gemeinsam genutzt wird. Er beschleunigt die Installationszeiten und spart Speicherplatz. Der renv
-Cache speichert keine Pakete, die über die devtools
-API oder install.packages()
mit zusätzlichen Argumenten außer pkgs
heruntergeladen wurden.