R 库管理
库提供可重用的代码,你可能想要包含在Microsoft Fabric Spark 的程序或项目中。
Microsoft Fabric 支持具有许多常用开源 R 包(包括预安装的 TidyVerse)的 R 运行时。 启动 Spark 实例时,这些库会自动包含在笔记本或 Spark 作业定义中,可供立即使用。
出于各种原因,可能需要更新 R 库。 例如,其中一个核心依赖项发布了新版本,或者你的团队已经生成了一个需要在 Spark 群集中使用的自定义包。
根据方案,可能需要包括两种类型的库:
源库是指驻留在公共源或存储库中的库,如 CRAN 或 GitHub。
自定义库 是由你或组织生成的代码,.tar.gz 可以通过库管理门户进行管理。
Microsoft Fabric 上安装两个级别的包:
环境:通过环境管理库,以便在多个笔记本或作业中重复使用同一组库。
会话:会话级安装为特定笔记本会话创建环境。 会话级库的更改不会在会话之间保留。
汇总当前可用的 R 库管理行为:
库类型 | 环境安装 | 会话级安装 |
---|---|---|
R 源 (CRAN) | 不支持 | 支持 |
R 自定义 | 支持 | 支持 |
先决条件
获取 Microsoft Fabric 订阅。 或者,注册免费的 Microsoft Fabric 试用版。
登录 Microsoft Fabric。
使用主页左下侧的体验切换器切换到 Fabric。
会话级 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 自定义库
若要使用会话级自定义库,必须先将其上传到附加的 Lakehouse。
打开想要在其中使用自定义库的笔记本。
在左侧,选择 添加 以添加现有湖屋或创建湖屋。
右键单击或选择“文件”旁边的“...”以上传 .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()
中,包参数设置为 FALSE。 此操作将当前 libPaths 中的库复制到工作器,允许你导入这些库并在工作器中使用它们。 例如,可以运行以下命令以生成具有 sparklyr::spark_apply()
的 caesar 加密消息:
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)
相关内容
- 在 Microsoft Fabric 中创建、配置和使用环境
详细了解 R 功能: