Udostępnij za pośrednictwem


renv w usłudze Azure Databricks

renv to pakiet języka R, który umożliwia użytkownikom zarządzanie zależnościami języka R specyficznymi dla notesu.

Za pomocą programu renvmożna utworzyć środowisko biblioteki języka R dla projektu i zarządzać nim, zapisać stan tych bibliotek w lockfilebibliotece , a później przywrócić je zgodnie z potrzebami. Razem te narzędzia mogą pomóc w bezpieczniejszym izolowanym, przenośnym i powtarzalnym projektach.

Podstawowy renv przepływ pracy

W tej sekcji:

Instalować renv

Możesz zainstalować renv jako bibliotekę o zakresie klastra lub jako bibliotekę o zakresie notesu. Aby zainstalować renv jako bibliotekę o zakresie notesu, użyj:

require(devtools)

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

Usługa Databricks zaleca używanie migawki CRAN jako repozytorium w celu naprawienia wersji pakietu.

Inicjowanie renv sesji przy użyciu wstępnie zainstalowanych bibliotek języka R

Pierwszym krokiem podczas używania renv jest zainicjowanie sesji przy użyciu polecenia renv::init(). Ustaw libPaths wartość , aby zmienić domyślną lokalizację pobierania na ścieżkę biblioteki o zakresie notesu języka R.

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

Użyj renv polecenia , aby zainstalować dodatkowe pakiety

Teraz możesz użyć renvinterfejsu API do zainstalowania i usunięcia pakietów języka R. Aby na przykład zainstalować najnowszą wersję programu digest, uruchom następujące polecenie w komórce notesu.

renv::install("digest")

Aby zainstalować starą wersję programu digest, uruchom następujące polecenie wewnątrz komórki notesu.

renv::install("digest@0.6.18")

Aby zainstalować aplikację digest z usługi GitHub, uruchom następujące polecenie wewnątrz komórki notesu.

renv::install("eddelbuettel/digest")

Aby zainstalować pakiet z narzędzia Bioconductor, uruchom następujące polecenie wewnątrz komórki notesu.

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

Należy pamiętać, że interfejs renv::install API używa pamięci podręcznej renv.

Użyj renv polecenia , aby zapisać środowisko notesu języka R w systemie plików DBFS

Uruchom następujące polecenie raz przed zapisaniem środowiska.

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

Spowoduje to skonfigurowanie renv migawki wszystkich pakietów zainstalowanych w libPathsprogramie , a nie tylko tych, które są obecnie używane w notesie. Aby uzyskać więcej informacji, zobacz dokumentację renv.

Teraz możesz uruchomić następujące polecenie wewnątrz komórki notesu, aby zapisać bieżący stan środowiska.

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

Spowoduje to zaktualizowanie lockfile programu przez przechwycenie wszystkich pakietów zainstalowanych w programie libPaths. Przenosi również plik lockfile z lokalnego systemu plików do systemu plików DBFS, gdzie będzie się powtarzać nawet wtedy, gdy klaster zakończy działanie lub uruchomi ponownie.

renv Ponowne instalowanie środowiska z lockfile systemu plików DBFS

Najpierw upewnij się, że nowy klaster ma identyczną wersję środowiska Databricks Runtime jako pierwszą utworzoną renv w środowisku. Gwarantuje to, że wstępnie zainstalowane pakiety języka R są identyczne. Listę tych elementów można znaleźć w informacjach o wersji każdego środowiska uruchomieniowego. Po zainstalowaniu ponownego uruchomienia uruchom następujące polecenie wewnątrz komórki notesu.

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

Spowoduje to skopiowanie pliku lockfile z systemu plików DBFS do lokalnego systemu plików, a następnie przywrócenie wszystkich pakietów określonych w pliku lockfile.

Uwaga

Aby uniknąć błędów brakujących repozytorium, wyklucz Rserve pakiety i SparkR z przywracania pakietów. Oba te pakiety są wstępnie zainstalowane we wszystkich środowiskach uruchomieniowych.

renv Pamięć podręczna

Bardzo przydatną funkcją renv jest jego globalna pamięć podręczna pakietów, która jest współdzielona we wszystkich renv projektach w klastrze. Skraca czas instalacji i oszczędza miejsce na dysku. Pamięć podręczna renv nie buforuje pakietów pobranych za pośrednictwem interfejsu devtools API ani install.packages() żadnych dodatkowych argumentów innych niż pkgs.