Freigeben über


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