Delen via


renv in 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 samen helpen projecten geïsoleerde, draagbare en reproduceerbare projecten te maken.

Basiswerkstroom renv

In deze sectie:

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

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 deze libPaths optie in om de standaarddownloadlocatie te wijzigen in uw R Notebook Scoped Library-pad.

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 's gebruiken renvom 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 eenmaal uit voordat u de omgeving opslaat.

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

Hiermee wordt ingesteld renv dat alle pakketten die zijn geïnstalleerd in een momentopname worden gemaakt libPaths, niet alleen 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 de update bijgewerkt lockfile door alle pakketten vast te leggen die zijn geïnstalleerd op libPaths. 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 Renv hebt geïnstalleerd, 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.