メインコンテンツまでスキップ

Databricks でrenv

renv は、ユーザーがノートブックに固有の R 依存関係を管理できるようにする R パッケージです。

renvを使用すると、プロジェクトの R ライブラリ環境を作成および管理し、これらのライブラリの状態を lockfileに保存し、後で必要に応じてライブラリを復元できます。これらのツールを組み合わせることで、プロジェクトをより分離し、移植性を高め、再現性を高めることができます。

基本的な renv ワークフロー

このセクションの内容:

取り付ける renv

renv、クラスター スコープのライブラリまたはノートブック スコープのライブラリとしてインストールできます。renv をノートブック スコープのライブラリとしてインストールするには、次を使用します。

R
require(devtools)

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

Databricks では、 パッケージのバージョンを修正するためのリポジトリとして CRAN スナップショットを使用することをお勧めします。

プレインストールされた R ライブラリを使用してセッション renv 初期化します

renv を使用する際の最初のステップは、 renv::init()を使用してセッションを初期化することです。デフォルトのダウンロード場所を R ノートブック スコープのライブラリ パスに変更するには、libPaths を設定します。

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

renv を使用して追加のパッケージをインストールする

これで、 renvの API を使用して R パッケージをインストールおよび削除できます。 たとえば、最新バージョンの digestをインストールするには、ノートブックのセル内で次のコマンドを実行します。

R
renv::install("digest")

古いバージョンの digestをインストールするには、ノートブックのセル内で次のコマンドを実行します。

R
renv::install("digest@0.6.18")

GitHub から digest をインストールするには、ノートブック セル内で次のコマンドを実行します。

R
renv::install("eddelbuettel/digest")

Bioconductorからパッケージをインストールするには、ノートブックセル内で次のコマンドを実行します。

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

renv::install API は renv Cache を使用することに注意してください。

renv を使用して R ノートブック環境を DBFS に保存します

環境を保存する前に、次のコマンドを一度実行してください。

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

これにより、ノートブックで現在使用されているパッケージだけでなく、libPathsにインストールされているすべてのパッケージのスナップショットが renv に設定されます。詳細については、 renv のドキュメント を参照してください。

これで、ノートブックのセル内で次のコマンドを実行して、環境の現在の状態を保存できます。

R
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をインストールした後、ノートブックのセル内で次のコマンドを実行します。

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

これにより、 lockfile DBFS からローカル ファイル システムにコピーされ、 lockfileで指定されたパッケージが復元されます。

注記

リポジトリが見つからないというエラーを避けるには、RserveSparkR パッケージをパッケージの復元から除外してください。 これらのパッケージは両方とも、すべてのランタイムにあらかじめインストールされています。

renv キャッシュ

renv の非常に便利な機能は、クラスター上のすべてのrenvプロジェクトで共有されるグローバル パッケージ キャッシュです。インストール時間を短縮し、ディスク容量を節約します。 renv キャッシュは、devtools API またはinstall.packages() を介してダウンロードされたパッケージをキャッシュしません。pkgs以外の追加の引数は使用しません。