笔记本范围的 R 库
通过使用笔记本范围内的 R 库,可以创建和修改特定于笔记本会话的自定义 R 环境。 安装笔记本范围内的 R 库时,只有当前笔记本以及与该笔记本关联的任何作业有权访问该库。 附加到同一群集的其他笔记本不受影响。
笔记本范围内的库不会跨会话保留。 必须在每个会话开始时或从群集中分离笔记本时,重新安装笔记本范围内的库。
笔记本范围内的库在工作器上自动提供给 SparkR UDF 使用。
若要为附加到群集的所有笔记本安装库,请使用已安装群集的库。 请参阅群集库。
在 R 中安装笔记本范围内的库
可以使用任何熟悉的方法在 R 中安装包,例如 install.packages()、devtools API 或 Bioconductor。
工作器节点和驱动程序节点可以访问 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 工作器无法访问这些包。 如果要在笔记本以及工作器之间共享库,请使用群集库。
是否会缓存笔记本范围内的库?
群集上没有为笔记本范围内的库实现的缓存。 如果你在笔记本中安装包,而另一个用户在同一群集上的另一个笔记本中安装相同的包,则将再次下载、编译和安装该包。