次の方法で共有


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 を使用して新しいパッケージをインストールする

これで、R パッケージのインストールと削除を renv の API を使用して行えるようになりました。 たとえば、最新バージョンの 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 キャッシュが使用されることに注意してください。

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

環境を保存する前に次のコマンドを 1 回実行します。

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 に指定されたすべてのパッケージが復元されます。

注意

リポジトリの欠落エラーを防ぐために、RserveSparkR パッケージは、パッケージの復元から除外してください。 どちらのパッケージも、すべてのランタイムにプレインストールされています。

renv のキャッシュ

renv には、グローバル パッケージ キャッシュという非常に便利な機能があり、クラスター上のすべての renv プロジェクト間でこのキャッシュが共有されます。 これによってインストール時間が短縮され、ディスク領域が節約されます。 devtools API または install.packages() から、pkgs 以外の引数を追加してダウンロードされたパッケージは、renv キャッシュではキャッシュされません。