다음을 통해 공유


Azure Databricks의 renv

renv는 사용자가 Notebook과 관련된 R 종속성을 관리할 수 있게 해주는 R 패키지입니다.

renv를 사용하여 프로젝트의 R 라이브러리 환경을 생성 및 관리하고, 이러한 라이브러리의 상태를 lockfile에 저장하고, 필요에 따라 나중에 복원할 수 있습니다. 이러한 도구를 함께 사용하면 프로젝트를 보다 격리되고 이식 가능하며 재현할 수 있습니다.

기본 renv 워크플로

이 구역의 내용:

설치 renv

renv클러스터 범위 라이브러리 또는 Notebook 범위 라이브러리로 설치할 수 있습니다. Notebook 범위 라이브러리로 renv를 설치하려면 다음을 사용합니다.

require(devtools)

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

Databricks는 CRAN 스냅샷을 리포지토리로 사용하여 패키지 버전을 수정하는 것이 좋습니다.

사전 설치된 R 라이브러리를 사용하여 renv 세션 초기화

renv를 사용할 때 첫 번째 단계는 renv::init()를 사용하여 세션을 초기화하는 것입니다. 기본 다운로드 위치를 libPaths로 변경하도록 를 설정합니다.

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

renv를 사용하여 추가 패키지 설치

이제 renv의 API를 사용하여 R 패키지를 설치 및 제거할 수 있습니다. 예를 들어 최신 버전의 digest를 설치하려면 Notebook 셀 내에서 다음을 실행합니다.

renv::install("digest")

이전 버전의 digest를 설치하려면 Notebook 셀 내에서 다음을 실행합니다.

renv::install("digest@0.6.18")

GitHub에서 digest를 설치하려면 Notebook 셀 내에서 다음을 실행합니다.

renv::install("eddelbuettel/digest")

Bioconductor에서 패키지를 설치하려면 Notebook 셀 내에서 다음을 실행합니다.

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

renv::install API는 renv 캐시를 사용합니다.

renv를 사용하여 R Notebook 환경을 DBFS에 저장

환경을 저장하기 전에 다음 명령을 한 번 실행합니다.

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

그러면 현재 Notebook에서 사용되는 패키지뿐만 아니라 renv에 설치된 모든 패키지를 스냅샷이 생성되도록 libPaths가 설정합니다. 자세한 내용은 renv 설명서를 참조하세요.

이제 Notebook 셀 내에서 다음을 실행하여 환경의 현재 상태를 저장할 수 있습니다.

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

그러면 lockfile에 설치된 모든 패키지를 캡처하여 libPaths을 업데이트합니다. 또한 lockfile을 로컬 파일 시스템에서 DBFS로 이동하여 클러스터가 종료되거나 다시 시작되더라도 유지됩니다.

DBFS에서 renv이 지정된 lockfile 환경 다시 설치

먼저 새 클러스터에서 renv 환경을 처음 만든 것과 동일한 Databricks Runtime 버전을 실행하고 있는지 확인합니다. 이렇게 하면 미리 설치된 R 패키지가 동일합니다. 각 런타임의 릴리스 정보에서 이러한 목록을 찾을 수 있습니다. renv를 설치한 후 Notebook 셀 내에서 다음을 실행합니다.

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

그러면 DBFS에서 로컬 파일 시스템으로 lockfile을 복사한 다음, lockfile에 지정된 모든 패키지를 복원합니다.

참고 항목

리포지토리 오류가 누락되는 것을 방지하려면 패키지 복원에서 RserveSparkR 패키지를 제외합니다. 이러한 패키지는 모두 모든 런타임에 미리 설치됩니다.

renv 캐시

renv의 매우 유용한 기능은 클러스터의 모든 프로젝트에서 공유되는 renv입니다. 설치 시간을 단축하고 디스크 공간을 절약합니다. renv 캐시는devtools 이외의 추가 인수를 사용하여 install.packages() API 또는 pkgs를 통해 다운로드한 패키지를 캐시하지 않습니다.