在 Azure Synapse Analytics 中管理 Apache Spark 池的库
在确定要用于 Spark 应用程序或为其更新的 Scala、Java、R(预览版)或 Python 包后,就可将它们安装到 Spark 池中或从中移除它们。 池级别的库可用于在池中运行的所有笔记本和作业。
可以通过两种主要方式在 Spark 池上安装库:
- 安装已作为工作区包上传的工作区库。
- 若要更新 Python 库,请提供 requirements.txt 或 Conda environment.yml 环境规范,以从 PyPI、Conda-Forge 等存储库中安装包。 有关详细信息,请阅读有关环境规范的部分。
保存更改后,Spark 作业将运行安装并缓存生成的环境,供以后再次使用。 作业完成后,新的 Spark 作业或笔记本会话将使用更新的池库。
重要
- 如果要安装的包很大,或者需要很长时间才能完成安装,则会影响 Spark 实例的启动时间。
- 不支持更改 PySpark、Python、Scala/Java、.NET、R 或 Spark 版本。
- 不支持在已启用“数据外泄防护”的工作区中安装来自 PyPI、Conda-Forge 等外部存储库或默认 Conda 通道的包。
通过 Synapse Studio 或 Azure 门户管理包
通过 Synapse Studio 或 Azure 门户可以管理 Spark 池库。
在 Spark 池中更新或添加库:
从 Azure 门户导航到 Azure Synapse Analytics 工作区。
如果要通过“Azure 门户”更新:
如果要通过 Synapse Studio 更新:
对于 Python 源库,请使用该页面“包”部分的文件选择器上传环境配置文件。
还可以选择其他“工作区包”,将 Jar、Wheel 或 Tar.gz 文件添加到池中。
还可以从“工作区包”部分删除已弃用的包,池将不再附加这些包。
保存更改后,将触发系统作业来安装和缓存指定的库。 此过程有助于缩短总体会话启动时间。
成功完成作业后,所有新会话都将选取更新的池库。
重要
通过选择“强制使用新设置”选项,将结束所选 Spark 池的所有当前会话。 会话结束后,需要等待池重启。
如果未选中此设置,则需要等待当前 Spark 会话结束或手动将其停止。 会话结束后,需要重启池。
跟踪安装进度
每次为池更新一组新的库时,都会启动系统预留的 Spark 作业。 此 Spark 作业有助于监视库的安装状态。 如果由于库冲突或其他问题而导致安装失败,Spark 池将恢复为以前的状态或默认状态。
此外,用户还可以检查安装日志来识别依赖项冲突,或查看在池更新过程中安装了哪些库。
查看安装日志:
- 导航到“监视”选项卡中的 Spark 应用程序列表。
- 选择与池更新相对应的系统 Spark 应用程序作业。 这些系统作业在 SystemReservedJob-LibraryManagement 标题下运行。
- 切换查看“驱动程序”和 stdout 日志。
- 在结果中,将会看到与依赖项安装相关的日志。
环境规范格式
PIP requirements.txt
可以使用 requirements.txt 文件(pip freeze
命令的输出)来升级环境。 更新池时,将从 PyPI 下载此文件中列出的包。 然后,将缓存并保存全部依赖项,以便以后可重复使用池。
以下代码片段显示了要求文件的格式。 PyPI 包名称将与确切的版本一起列出。 此文件遵循 pip freeze 参考文档中所述的格式。
此示例固定使用一个特定版本。
absl-py==0.7.0
adal==1.2.1
alabaster==0.7.10
YML 格式
此外,还可以提供 environment.yml 文件来更新池环境。 此文件中列出的包是从默认 Conda 通道、Conda-Forge 和 PyPI 下载的。 可以使用配置选项指定其他通道或删除默认通道。
此示例指定通道和 Conda/PyPI 依赖项。
name: stats2
channels:
- defaults
dependencies:
- bokeh
- numpy
- pip:
- matplotlib
- koalas==1.7.0
有关从此 environment.yml 文件创建环境的详细信息,请参阅从 environment.yml 文件创建环境。
后续步骤
- 查看默认库:Apache Spark 版本支持
- 排查库安装错误:排查库错误