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

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

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

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

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

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

install.packages()devtools APIBioconductor などの使い慣れた方法で、R にパッケージをインストールできます。

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

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

このセクションの内容は次のとおりです。

パッケージをインストールする

require(devtools)

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

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

devtools::install_github("klutometis/roxygen")

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

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

remove.packages("caesar")

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

このセクションの内容は次のとおりです。

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

ノートブック スコープのライブラリは、SparkR ワーカーで利用できます。そのためには、ライブラリをインポートします。 たとえば、次を実行すると、SparkR UDF で、シーザーで暗号化されたメッセージを生成できます。

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() で、シーザーで暗号化されたメッセージを生成できます。

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

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

よく寄せられる質問 (FAQ)

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

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

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

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