renv
在 Azure Databricks 上
renv 是 R 套件,可讓使用者管理筆記本專屬的 R 相依性。
使用 renv
,您可以建立和管理專案的 R 程式庫環境、視需要將這些程式庫的狀態儲存到 lockfile
,以及稍後還原程式庫。 這些工具可協助讓專案更隔離、可移植且可重現。
基本 renv
工作流程
在本節中:
- 安裝
renv
- 使用預先安裝的 R 程式庫初始化
renv
會話 - 用來
renv
安裝其他套件 - 使用
renv
將 R 筆記本環境儲存至 DBFS renv
從 DBFS 重新安裝提供lockfile
的環境
安裝 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
將 R 筆記本環境儲存至 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 執行時間版本。 這可確保預先安裝的 R 套件完全相同。 您可以在每個執行時間 的版本資訊中找到這些清單。 安裝轉譯之後,請在筆記本資料格內執行下列命令。
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
API 下載的套件,或 install.packages()
與 以外的 pkgs
任何其他引數一起下載。