renv op Azure Databricks

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

Met behulp renvvan kunt u de R-bibliotheekomgeving voor uw project maken en beheren, de status van deze bibliotheken opslaan in een lockfileen desgewenst later bibliotheken herstellen. Samen kunnen deze hulpprogramma's projecten geïsoleerder, draagbaarder en reproduceerbaar 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 in libPaths om de standaarddownloadlocatie te wijzigen in het bibliotheekpad met R-notebookbereik.

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

Gebruik renv om extra pakketten te installeren

U kunt nu de API 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 van Bioconductor wilt installeren, 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 stelt u renv een momentopname in van alle pakketten die zijn geïnstalleerd in libPaths, niet alleen de pakketten die momenteel in de 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 lockfile bijgewerkt door alle pakketten vast te leggen die zijn geïnstalleerd op libPaths. U wordt ook verplaatst 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 vanuit lockfile DBFS

Zorg er eerst voor dat uw nieuwe cluster een identieke Versie van Databricks Runtime uitvoert als de versie waarop u de omgeving het renv eerst hebt gemaakt. Dit zorgt ervoor dat de vooraf geïnstalleerde R-pakketten identiek zijn. U vindt een lijst met deze 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.

Opmerking

Sluit de pakketten en SparkR uit van pakketherstel om fouten in de Rserve opslagplaats te voorkomen. Beide pakketten zijn vooraf geïnstalleerd in alle runtimes.

renv Cache

Een zeer handige functie van renv is de globale pakketcache, die wordt gedeeld met 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 aanvullende argumenten dan pkgs.