管理会话范围内的包
除了池级别的包以外,还可以在笔记本会话开始时指定会话范围的库。 使用限制会话范围的库时,可以在笔记本会话中指定和使用 Python、jar 和 R 包。
使用限制会话范围的库时,请务必牢记以下几点:
- 安装限制会话范围的库时,只有当前笔记本可以访问指定的库。
- 这些库不会影响使用同一 Spark 池的其他会话或作业。
- 这些库安装在基本运行时和池级别库之上,并具有最高优先级。
- 限制会话范围的库不会跨会话保留。
会话范围内的 Python 包
通过 environment.yml 文件管理限制会话范围的 Python 包
指定会话范围内的 Python 包:
- 导航到所选的 Spark 池,确保已启用会话级别的库。 通过导航到“管理”>“Apache Spark 池”>“包”选项卡可以启用此设置。
- 应用了设置后,可以打开笔记本,然后选择“配置会话”>“包”。
- 在这里,可以上传 Conda environment.yml 文件,以在会话中安装或升级包。会话启动后,指定的库就会存在。 会话结束后,这些库将不再可用。
通过 %pip 和 %conda 命令管理限制会话范围的 Python 包
可以使用常用的 %pip 和 %conda 命令在 Apache Spark 笔记本会话期间安装其他第三方库或自定义库。 在本部分中,我们使用 %pip 命令来演示几种常见方案。
注意
安装第三方包
可以轻松地从 PyPI 安装 Python 库。
# Install vega_datasets
%pip install altair vega_datasets
若要验证安装结果,可以运行以下代码来可视化 vega_datasets
# Create a scatter plot
# Plot Miles per gallon against the horsepower across different region
import altair as alt
from vega_datasets import data
cars = data.cars()
alt.Chart(cars).mark_point().encode(
x='Horsepower',
y='Miles_per_Gallon',
color='Origin',
).interactive()
从存储帐户安装 wheel 包
若要从存储安装库,需要通过运行以下命令装载到存储帐户。
from notebookutils import mssparkutils
mssparkutils.fs.mount(
"abfss://<<file system>>@<<storage account>.dfs.core.chinacloudapi.cn",
"/<<path to wheel file>>",
{"linkedService":"<<storage name>>"}
)
然后,可以使用 %pip install 命令安装所需的 wheel 包
%pip install /<<path to wheel file>>/<<wheel package name>>.whl
安装另一个版本的内置库
可以使用以下命令查看特定包的内置版本。 我们使用 pandas 作为示例
%pip show pandas
结果如以下日志所示:
Name: pandas
Version: **1.2.3**
Summary: Powerful data structures for data analysis, time series, and statistics
Home-page: https://pandas.pydata.org
... ...
可以使用以下命令将 pandas 切换到另一个版本,例如 1.2.4
%pip install pandas==1.2.4
卸载限制会话范围的库
如果要卸载此笔记本会话中安装的包,可以参考以下命令。 但是,无法卸载内置包。
%pip uninstall altair vega_datasets --yes
使用 %pip 命令从 requirement.txt 文件安装库
%pip install -r /<<path to requirement file>>/requirements.txt
会话范围内的 Java 或 Scala 包
若要指定限制会话范围的 Java 或 Scala 包,可使用 %%configure
选项:
%%configure -f
{
"conf": {
"spark.jars": "abfss://<<file system>>@<<storage account>.dfs.core.chinacloudapi.cn/<<path to JAR file>>",
}
}
注意
- 建议你在笔记本开头运行 %%configure。 若要查看有效参数的完整列表,请参阅此文档。
会话范围的 R 包(预览版)
Azure Synapse Analytics 池包含许多现成的流行 R 库。 你还可以在 Apache Spark 笔记本会话期间安装额外的第三方库。
注意
- 运行管道作业时,将禁用这些用于管理 R 库的命令。 如果你要在管道中安装某个包,必须利用池级别的库管理功能。
- 限制会话范围的 R 库会自动安装在驱动程序和工作器节点中。
安装包
可以从 CRAN 轻松安装 R 库。
# Install a package from CRAN
install.packages(c("nycflights13", "Lahman"))
还可以使用 CRAN 快照作为存储库,以确保每次都下载相同的包版本。
install.packages("highcharter", repos = "https://cran.microsoft.com/snapshot/2021-07-16/")
使用 devtools 安装包
devtools
库简化了包开发以加快常见任务。 此库安装在默认的 Azure Synapse Analytics 运行时中。
可以使用 devtools
指定要安装的特定库版本。 这些库将安装在群集中的所有节点上。
# Install a specific version.
install_version("caesar", version = "1.0.0")
同样,可以直接从 GitHub 安装库。
# Install a GitHub library.
install_github("jtilly/matchingR")
目前,Azure Synapse Analytics 中支持以下 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 上的特定版本安装 |
查看已安装的库
可以使用 library
命令查询会话中安装的所有库。
library()
可以使用 packageVersion
函数检查库的版本:
packageVersion("caesar")
从会话中删除 R 包
可以使用 detach
函数从命名空间中删除库。 这些库会保留在磁盘上,直到再次加载它们。
# detach a library
detach("package: caesar")
若要从笔记本中删除会话范围的包,请使用 remove.packages()
命令。 此库更改不会影响同一群集上的其他会话。 用户无法卸载或删除默认 Azure Synapse Analytics 运行时的内置库。
remove.packages("caesar")
注意
无法删除 SparkR、SparklyR 或 R 等核心包。
会话范围的 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 <- "3.2"
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)
后续步骤
- 查看默认库:Apache Spark 版本支持
- 管理 Synapse Studio 门户外的包:通过 Az 命令和 REST API 管理包