ノートブック スコープの R ライブラリ
ノートブック スコープの R ライブラリを使用すると、ノートブック セッションに固有のカスタム R 環境を作成および変更できます。 ノートブック スコープの R ライブラリをインストールすると、現在のノートブックと、そのノートブックに関連付けられているすべてのジョブにのみ、そのライブラリへのアクセス権が付与されます。 同じクラスターにアタッチされている他のノートブックは影響を受けません。
ノートブック スコープのライブラリは、セッション間で保持されません。 各セッションの開始時、またはノートブックがクラスターからデタッチされるたびに、ノートブック スコープのライブラリを再インストールする必要があります。
ノートブック スコープのライブラリは、SparkR UDF のワーカーで自動的に使用可能になります。
クラスターにアタッチされているすべてのノートブックのライブラリをインストールするには、クラスターにインストールされたライブラリを使用します。 「クラスター ライブラリ」を参照してください。
R にノートブック スコープのライブラリをインストールする
install.packages()、devtools API、Bioconductor などの使い慣れた方法で、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)
ワーカーでライブラリを使用できないようにするには、packages
を FALSE
に設定します。
ライブラリの分離とホストされた 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 ワーカーからはアクセスできません。 ノートブック間やワーカー間でライブラリを共有するには、クラスター ライブラリを使用します。
ノートブック スコープのライブラリはキャッシュされますか?
クラスター上のノートブック スコープのライブラリについては、キャッシュは実装されていません。 ノートブックにパッケージをインストールしている場合、別のユーザーが同じクラスターの別のノートブックに同じパッケージをインストールすると、パッケージがダウンロードされ、コンパイルされて、再度インストールされます。