共用方式為


Azure Databricks 上的 renv

renv 是一種 R 套件,可讓使用者管理筆記本專屬的 R 相依性。

使用 renv,您可以建立及管理專案的 R 連結庫環境、視需要將這些連結庫的狀態儲存至 lockfile,以及稍後還原連結庫。 這些工具一起有助於讓專案更隔離、可移植且可重現。

基本 renv 工作流程

本節內容:

安裝 renv

您可以將 安裝 renv叢集範圍連結庫筆記本範圍連結庫。 若要安裝 renv 為筆記本範圍的連結庫,請使用:

require(devtools)

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

Databricks 建議使用 CRAN 快照集作為存放庫來 修正套件版本

使用預安裝的 R 連結庫初始化 renv 工作階段

使用 renv 時的第一個步驟是使用 renv::init()初始化會話。 設定 libPaths 為將預設下載位置變更為 R 筆記本範圍的連結庫路徑

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

用來 renv 安裝其他套件

您現在可以使用 renv的 API 來安裝和移除 R 套件。 例如,若要安裝 最新版本的 digest,請在筆記本數據格內執行下列命令。

renv::install("digest")

若要安裝 舊版 的 digest,請在筆記本數據格內執行下列命令。

renv::install("digest@0.6.18")

若要從 GitHub 安裝 digest ,請在筆記本數據格內執行下列命令。

renv::install("eddelbuettel/digest")

若要從 Bioconductor 安裝套件,請在筆記本數據格內執行下列命令。

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

請注意, renv::install API 會使用 renv Cache

使用 renv 將 R Notebook 環境儲存至 DBFS

儲存環境之前,請先執行下列命令一次。

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

這會設定為快照集 renv 所有已安裝至 libPaths的套件,而不只是筆記本中目前所使用的套件。 如需詳細資訊,請參閱 renv 檔

現在,您可以在筆記本數據格內執行下列命令,以儲存您環境的目前狀態。

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

這會藉由擷取上安裝libPaths的所有套件來更新 lockfile 。 它也會將您 lockfile 從本機文件系統移至 DBFS,即使叢集終止或重新啟動,也會保存它。

renv從 DBFS 重新安裝指定的lockfile環境

首先,請確定您的新叢集正在執行與您第一次建立 renv 環境相同的 Databricks Runtime 版本。 這可確保預安裝的 R 套件完全相同。 您可以在每個執行時間 的版本資訊中找到這些清單。 安裝 renv 之後,請在筆記本數據格內執行下列命令。

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

這會將您 lockfile 從 DBFS 複製到本機檔案系統,然後還原 中指定的 lockfile任何套件。

注意

若要避免遺漏存放庫錯誤,請將和 SparkR 套件排除Rserve在套件還原中。 這兩個套件都預安裝在所有運行時間中。

renv 緩存

的一個非常實用的功能 renv 是其 全域套件快取,它會在叢集上的所有 renv 專案上共用。 其可加速安裝時間並節省磁碟空間。 快renv取不會快取透過 API 下載的套件,也不會install.packages()快取除了 devtools 以外的pkgs任何其他自變數。