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

ノートブック スコープの R ライブラリ

ノートブック スコープの R ライブラリを使用すると、ノートブック セッションに固有のカスタム R 環境を作成および変更できます。 R ノートブック スコープのライブラリをインストールすると、現在のノートブックとそのノートブックに関連付けられているジョブのみがそのライブラリにアクセスできます。 同じクラスターに接続されている他のノートブックは影響を受けません。

ノートブックスコープのライブラリはセッションをまたがって保持されません。各セッションの開始時、またはノートブックがクラスターから切り離されるたびに、ノートブックスコープのライブラリを再インストールする必要があります。

ノートブック スコープのライブラリ ライブラリは、 SparkR UDF のワーカーで自動的に使用できます。

クラスターにアタッチされているすべてのノートブックにライブラリをインストールするには、クラスター-installed ライブラリを使用します。 クラスター ライブラリを参照してください。

ノートブック スコープのライブラリを R にインストールする

Rでパッケージをインストールするには、install.packages()、devtools APIsBioconductorなど、おなじみの方法を使用できます。

R パッケージは、ワーカー ノードとドライバー ノードからアクセスできます。

ノートブック スコープのライブラリを R で管理する

このセクションの内容:

パッケージのインストール

R
require(devtools)

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

Databricks では、 再現性のある結果を保証するために、リポジトリとして CRAN スナップショットを使用することをお勧めします。

R
devtools::install_github("klutometis/roxygen")

ノートブック環境から R パッケージを削除する

ノートブックからノートブック スコープのライブラリを削除するには、 remove.packages() コマンドを使用します。

R
remove.packages("caesar")

Spark UDFs を使用したノートブック スコープの R ライブラリ

このセクションの内容:

ノートブック スコープの R ライブラリと SparkR

ノートブックスコープのライブラリは SparkR ワーカーで利用できます。ライブラリをインポートするだけで使用できます。 たとえば、次のコマンドを実行して、SparkR UDF を使用して caesar 暗号化メッセージを生成できます。

R
require(devtools)

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

library(SparkR)
sparkR.session()

hello <- function(x) {
library(caesar)
caesar("hello world")
}

spark.lapply(c(1, 2), hello)

ノートブック スコープの R ライブラリと Sparklyr

デフォルトでは、 sparklyr::spark_apply()では、 packages 引数は TRUEに設定されています。 これにより、現在の libPaths のライブラリがワーカーにコピーされ、それらをインポートしてワーカーで使用できるようになります。 たとえば、次のコマンドを実行して、 sparklyr::spark_apply()で caesar 暗号化メッセージを生成できます。

R
require(devtools)

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

library(sparklyr)
sc <- spark_connect(method = 'databricks')

apply_caes <- function(x) {
library(caesar)
caesar("hello world")
}

sdf_len(sc, 5) %>%
spark_apply(apply_caes)

ワーカーでライブラリを使用できないようにする場合は、 packagesFALSEに設定します。

ライブラリの分離とホストされた RStudio

RStudio は、ユーザーごとに個別のライブラリ パスを作成します。したがって、ユーザーは互いに分離されます。 ただし、ライブラリ パスはワーカーでは使用できません。 SparkRから起動したジョブでRStudio ワーカー内のパッケージを使用する場合は、クラスター ライブラリを使用してインストールする必要があります。

または、Sparklyr UDFs を使用する場合、 RStudio 内にインストールされたパッケージは、ワーカーが spark_apply(..., packages = TRUE) を使用するときに使用できます。

よくある質問(FAQ)

すべてのRノートブックのドライバーだけにパッケージをインストールするにはどうすればよいですか?

インストールディレクトリを明示的に /databricks/spark/R/libに設定します。 たとえば、 install.packages()を指定すると、 install.packages("pckg", lib="/databricks/spark/R/lib")を実行します。/databricks/spark/R/lib にインストールされたパッケージは、クラスター上のすべてのノートブックで共有されますが、ワーカー SparkR アクセスすることはできません。 ノートブックとワーカー間でライブラリを共有するには、 クラスター ライブラリを使用します。

ノートブック スコープのライブラリはキャッシュされますか?

クラスターでは、ノートブック スコープのライブラリにキャッシュは実装されていません。 ノートブックにパッケージをインストールし、別のユーザーが同じパッケージを同じクラスター上の別のノートブックにインストールした場合、パッケージはダウンロード、コンパイル、および再インストールされます。