Share via


renv op Azure Databricks

renv is een R-pakket waarmee gebruikers R-afhankelijkheden kunnen beheren die specifiek zijn voor het notebook.

Met behulp van renvkunt u de R-bibliotheekomgeving voor uw project maken en beheren, de status van deze bibliotheken opslaan in een lockfileen later herstellen van bibliotheken, indien nodig. Deze hulpprogramma's kunnen projecten geïsoleerder, draagbaar en reproduceerbaar maken.

Installeren renv

U kunt installeren renv als een bibliotheek met clusterbereik of als een bibliotheek met notebookbereik. Als u wilt installeren renv als een bibliotheek met notebookbereik, gebruikt u:

require(devtools)

install_version(
  package = "renv",
  repos   = "http://cran.us.r-project.org"
)

Databricks raadt aan om een CRAN-momentopname te gebruiken als opslagplaats om de pakketversie vast te zetten.

Sessie initialiseren renv met vooraf geïnstalleerde R-bibliotheken

De eerste stap bij het gebruik renv is het initialiseren van een sessie met behulp van renv::init(). Stel libPaths in om de standaarddownloadlocatie te wijzigen naar uw R-notebook-gebaseerd bibliotheekpad.

renv::init(settings = list(external.libraries=.libPaths()))
.libPaths(c(.libPaths()[2], .libPaths()))

Gebruiken renv om extra pakketten te installeren

U kunt nu de API van renv gebruiken om R-pakketten te installeren en te verwijderen. Als u bijvoorbeeld de nieuwste versie van digestwilt installeren, voert u het volgende uit in een notebookcel.

renv::install("digest")

Als u een oude versie van digestwilt installeren, voert u het volgende uit in een notebookcel.

renv::install("digest@0.6.18")

Als u wilt installeren digest vanuit GitHub, voert u het volgende uit in een notebookcel.

renv::install("eddelbuettel/digest")

Als u een pakket wilt installeren vanuit Bioconductor, voert u het volgende uit in een notebookcel.

# (note: requires the BiocManager package)
renv::install("bioc::Biobase")

Houd er rekening mee dat de renv::install API gebruikmaakt van de renv cache.

Gebruiken renv om uw R-notebookomgeving op te slaan in DBFS

Voer de volgende opdracht eenmalig uit voordat u de omgeving opslaat.

renv::settings$snapshot.type("all")

Hiermee wordt renv ingesteld om een momentopname te maken van alle pakketten die zijn geïnstalleerd in libPaths, en niet alleen van de pakketten die momenteel in het notebook worden gebruikt. Zie de renv-documentatie voor meer informatie.

U kunt nu het volgende uitvoeren in een notebookcel om de huidige status van uw omgeving op te slaan.

renv::snapshot(lockfile="/dbfs/PATH/TO/WHERE/YOU/WANT/TO/SAVE/renv.lock", force=TRUE)

Hiermee wordt lockfile bijgewerkt door alle pakketten die zijn geïnstalleerd op libPaths vast te leggen. Het verplaatst ook uw lockfile van het lokale bestandssysteem naar DBFS, waar het blijft bestaan, zelfs als uw cluster wordt beëindigd of opnieuw wordt opgestart.

renv Een omgeving opnieuw installeren die wordt lockfile gegeven vanuit DBFS

Zorg er eerst voor dat uw nieuwe cluster een identieke Databricks Runtime-versie uitvoert als de versie waarop u de omgeving voor het renv eerst hebt gemaakt. Dit zorgt ervoor dat de vooraf geïnstalleerde R-pakketten identiek zijn. U vindt een lijst met deze items in de releaseopmerkingen van elke runtime. Nadat u de renvinstallatie hebt uitgevoerd, voert u het volgende uit in een notebookcel.

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"))

Hiermee kopieert u uw lockfile van DBFS naar het lokale bestandssysteem en herstelt u vervolgens alle pakketten die zijn opgegeven in de lockfile.

Notitie

Als u fouten in de opslagplaats wilt voorkomen, sluit u de Rserve en SparkR pakketten uit van pakketherstel. Beide pakketten zijn vooraf geïnstalleerd in alle runtimes.

renv Cache

Een zeer handige functie van renv is de globale pakketcache, die wordt gedeeld door alle renv projecten in het cluster. Het versnelt de installatietijden en bespaart schijfruimte. De renv cache slaat geen pakketten op die zijn gedownload via de devtools API of install.packages() met andere argumenten dan pkgs.