Databricks でrenv
renv は、ユーザーがノートブックに固有の R 依存関係を管理できるようにする R パッケージです。
renv
を使用すると、プロジェクトの R ライブラリ環境を作成および管理し、これらのライブラリの状態を lockfile
に保存し、後で必要に応じてライブラリを復元できます。これらのツールを組み合わせることで、プロジェクトをより分離し、移植性を高め、再現性を高めることができます。
基本的な renv
ワークフロー
このセクションの内容:
- インストール
renv
- プリインストールされた R ライブラリを使用してセッションを初期化
renv
renv
を使用して追加のパッケージをインストールするrenv
を使用して R ノートブック環境を DBFS に保存します- DBFS から
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()
を使用してセッションを初期化することです。デフォルトのダウンロード場所を R ノートブック スコープのライブラリ パスに変更するには、libPaths
を設定します。
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 ノートブック環境を DBFS に保存します
環境を保存する前に、次のコマンドを一度実行してください。
renv::settings$snapshot.type("all")
これにより、ノートブックで現在使用されているパッケージだけでなく、libPaths
にインストールされているすべてのパッケージのスナップショットが renv
に設定されます。詳細については、 renv のドキュメント を参照してください。
これで、ノートブックのセル内で次のコマンドを実行して、環境の現在の状態を保存できます。
renv::snapshot(lockfile="/dbfs/PATH/TO/WHERE/YOU/WANT/TO/SAVE/renv.lock", force=TRUE)
これにより、libPaths
にインストールされているすべてのパッケージがキャプチャされ、lockfile
が更新されます。また、lockfile
をローカル・ファイルシステムから DBFSに移動し、クラスターが終了または再起動しても、このシステムは維持されます。
DBFS からlockfile
された renv
環境を再インストールします
まず、新しいクラスターが、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
で指定されたパッケージが復元されます。
リポジトリが見つからないというエラーを避けるには、Rserve
と SparkR
パッケージをパッケージの復元から除外してください。 これらのパッケージは両方とも、すべてのランタイムにあらかじめインストールされています。
renv
キャッシュ
renv
の非常に便利な機能は、クラスター上のすべてのrenv
プロジェクトで共有されるグローバル パッケージ キャッシュです。インストール時間を短縮し、ディスク容量を節約します。 renv
キャッシュは、devtools
API またはinstall.packages()
を介してダウンロードされたパッケージをキャッシュしません。pkgs
以外の追加の引数は使用しません。