Azure Databricks의 renv
renv는 사용자가 Notebook과 관련된 R 종속성을 관리할 수 있게 해주는 R 패키지입니다.
renv
를 사용하여 프로젝트의 R 라이브러리 환경을 생성 및 관리하고, 이러한 라이브러리의 상태를 lockfile
에 저장하고, 필요에 따라 나중에 복원할 수 있습니다. 이러한 도구를 함께 사용하면 프로젝트를 보다 격리되고 이식 가능하며 재현할 수 있습니다.
기본 renv
워크플로
이 구역의 내용:
-
설치
renv
-
사전 설치된 R 라이브러리를 사용하여
renv
세션 초기화 -
renv
를 사용하여 추가 패키지 설치 -
renv
를 사용하여 R Notebook 환경을 DBFS에 저장 -
DBFS에서
renv
이 지정된lockfile
환경 다시 설치
설치 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
에 지정된 모든 패키지를 복원합니다.
참고 항목
리포지토리 오류가 누락되는 것을 방지하려면 패키지 복원에서 Rserve
및 SparkR
패키지를 제외합니다. 이러한 패키지는 모두 모든 런타임에 미리 설치됩니다.
renv
캐시
renv
의 매우 유용한 기능은 클러스터의 모든 프로젝트에서 공유되는 renv
입니다. 설치 시간을 단축하고 디스크 공간을 절약합니다.
renv
캐시는devtools
이외의 추가 인수를 사용하여 install.packages()
API 또는 pkgs
를 통해 다운로드한 패키지를 캐시하지 않습니다.