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

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

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

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

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

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

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

Databricks Runtime 9.0 以降、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")

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

ノートブック スコープの 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::spark_apply()では、 packages 引数は TRUEに設定されます。 これにより、現在の libPaths のライブラリがワーカーにコピーされ、インポートしてワーカーで使用できるようになります。 たとえば、次のコマンドを実行して、 sparklyr::spark_apply()を使用して caesar 暗号化メッセージを生成できます。

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 を使用する場合、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 ワーカーはアクセスできません。ノートブック間およびワーカー間でライブラリを共有するには、 クラスター ライブラリを使用します。

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

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