R 库管理
这些库提供了可重用的代码,你可能想要在 Microsoft Fabric Spark 的程序或项目中包含这些代码。
Microsoft Fabric 支持 R 运行时,其中包含许多常用的开源 R 包,包括预安装的 TidyVerse。 Spark 实例启动时,这些库会自动包含在内,并可在笔记本或 Spark 作业定义中立即使用。
你可能会出于各种原因需要更新 R 库。 例如,你的一个核心依赖项发布了新版本,或者你的团队生成了一个自定义包,你需要在 Spark 群集中提供该包。
根据你的情况,可能需要包含两种类型的库:
源库:源库是指驻留在公共源或存储库中的源库,如 CRAN 或 GitHub。
自定义库是你或你的组织生成的代码,可以通过库管理门户管理 .tar.gz。
Microsoft Fabric 上安装了两个级别的包:
环境:通过环境管理库,以在多个笔记本或作业中重复使用同一组库。
会话:会话级安装会为特定的笔记本会话创建一个环境。 会话级别库的更改在会话之间不会保留。
汇总当前可用的 R 库管理行为:
库类型 | 环境安装 | 会话级安装 |
---|---|---|
R 源 (CRAN) | 不支持 | 支持 |
R 自定义 | 支持 | 支持 |
先决条件
获取 Microsoft Fabric 订阅。 或者注册免费的 Microsoft Fabric 试用版。
登录 Microsoft Fabric。
使用主页左侧的体验切换器切换到 Synapse 数据科学体验。
会话级 R 库
在进行交互式数据分析或机器学习时,可能会尝试更新版本的包,或者可能需要当前在工作区中不可用的包。 你可使用会话范围的包来添加、管理和更新会话依赖项,而无需更新工作区设置。
- 安装限制会话范围的库时,只有当前笔记本可以访问指定的库。
- 这些库不会影响使用同一 Spark 池的其他会话或作业。
- 这些库将安装在基本运行时和池级别库之上。
- 笔记本库的优先级最高。
- 会话范围的 R 库不会跨会话保留。 执行相关安装命令时,将在每个会话的开头安装这些库。
- 限制会话范围的 R 库会自动安装在驱动程序和工作器节点中。
注意
运行管道作业时,将禁用这些用于管理 R 库的命令。 如果你要在管道中安装某个包,必须使用工作区级别的库管理功能。
从 CRAN 安装 R 包
可以从 CRAN 轻松安装 R 库。
# install a package from CRAN
install.packages(c("nycflights13", "Lahman"))
还可以使用 CRAN 快照作为存储库,以确保每次都下载相同的包版本。
# install a package from CRAN snapsho
install.packages("highcharter", repos = "https://cran.microsoft.com/snapshot/2021-07-16/")
使用 devtools 安装 R 包
devtools
库简化了包开发以加快常见任务。 此库安装在默认的 Microsoft Fabric 运行时中。
可以使用 devtools
指定要安装的特定库版本。 这些库安装在群集中的所有节点上。
# Install a specific version.
install_version("caesar", version = "1.0.0")
同样,可以直接从 GitHub 安装库。
# Install a GitHub library.
install_github("jtilly/matchingR")
目前,Microsoft Fabric 中支持以下 devtools
函数:
命令 | 说明 |
---|---|
install_github() | 从 GitHub 安装 R 包 |
install_gitlab() | 从 GitLab 安装 R 包 |
install_bitbucket() | 从 BitBucket 安装 R 包 |
install_url() | 从任意 URL 安装 R 包 |
install_git() | 从任意 git 存储库安装 |
install_local() | 从磁盘上的本地文件安装 |
install_version() | 从 CRAN 上的特定版本安装 |
安装 R 自定义库
若要使用会话级自定义库,必须先将其上传到附加的湖屋。
在左侧,选择“添加”以添加现有湖屋或创建湖屋。
若要将文件添加到此湖屋,请选择工作区,然后选择湖屋。
右键单击或选择文件旁边的“...”以上传 .tar.gz 文件。
上传后,返回到笔记本。 使用以下命令将自定义库安装到会话:
install.packages("filepath/filename.tar.gz", repos = NULL, type = "source")
查看已安装的库
可以使用 library
命令查询会话中安装的所有库。
# query all the libraries installed in current session
library()
使用 packageVersion
函数检查库的版本:
# check the package version
packageVersion("caesar")
从会话中删除 R 包
可以使用 detach
函数从命名空间中删除库。 这些库会保留在磁盘上,直到再次加载它们。
# detach a library
detach("package: caesar")
若要从笔记本中删除会话范围的包,请使用 remove.packages()
命令。 此库更改不会影响同一群集上的其他会话。 用户无法卸载或删除默认 Microsoft Fabric 运行时的内置库。
注意
无法删除 SparkR、SparklyR 或 R 等核心包。
remove.packages("caesar")
会话范围的 R 库和 SparkR
在 SparkR 工作器上可以使用笔记本范围的库。
install.packages("stringr")
library(SparkR)
str_length_function <- function(x) {
library(stringr)
str_length(x)
}
docs <- c("Wow, I really like the new light sabers!",
"That book was excellent.",
"R is a fantastic language.",
"The service in this restaurant was miserable.",
"This is neither positive or negative.")
spark.lapply(docs, str_length_function)
会话范围的 R 库和 sparklyr
借助 sparklyr 中的 spark_apply()
,可以在 Spark 中使用任何 R 包。 默认情况下,在 sparklyr::spark_apply()
中,packages 参数设为 FALSE。 此操作将当前 libPaths 中的库复制到工作器,允许你导入这些库并在工作器中使用这些库。 例如,你可以运行以下命令来使用 sparklyr::spark_apply()
生成凯撒加密的消息:
install.packages("caesar", repos = "https://cran.microsoft.com/snapshot/2021-07-16/")
spark_version <- sparkR.version()
config <- spark_config()
sc <- spark_connect(master = "yarn", version = spark_version, spark_home = "/opt/spark", config = config)
apply_cases <- function(x) {
library(caesar)
caesar("hello world")
}
sdf_len(sc, 5) %>%
spark_apply(apply_cases, packages=FALSE)
相关内容
详细了解 R 功能: