在 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 池中更新或添加库:

  1. 从 Azure 门户导航到 Azure Synapse Analytics 工作区。

    如果要通过“Azure 门户”更新:

    • 在“Synapse 资源”部分下,选择“Apache Spark 池”选项卡,然后从列表中选择一个 Spark 池 。

    • 从 Spark 池的“设置”部分选择“包” 。 Screenshot that highlights the upload environment configuration file button.

    如果要通过 Synapse Studio 更新:

    • 从主导航面板中选择“管理”,然后选择“Apache Spark 池” 。

    • 选择特定 Spark 池的“包”部分。 Screenshot that highlights the logs of library installation.

  2. 对于 Python 源库,请使用该页面“包”部分的文件选择器上传环境配置文件。

  3. 还可以选择其他“工作区包”,将 Jar、Wheel 或 Tar.gz 文件添加到池中。

  4. 还可以从“工作区包”部分删除已弃用的包,池将不再附加这些包。

  5. 保存更改后,将触发系统作业来安装和缓存指定的库。 此过程有助于缩短总体会话启动时间。

  6. 成功完成作业后,所有新会话都将选取更新的池库。

重要

通过选择“强制使用新设置”选项,将结束所选 Spark 池的所有当前会话。 会话结束后,需要等待池重启。

如果未选中此设置,则需要等待当前 Spark 会话结束或手动将其停止。 会话结束后,需要重启池。

跟踪安装进度

每次为池更新一组新的库时,都会启动系统预留的 Spark 作业。 此 Spark 作业有助于监视库的安装状态。 如果由于库冲突或其他问题而导致安装失败,Spark 池将恢复为以前的状态或默认状态。

此外,用户还可以检查安装日志来识别依赖项冲突,或查看在池更新过程中安装了哪些库。

查看安装日志:

  1. 导航到“监视”选项卡中的 Spark 应用程序列表。
  2. 选择与池更新相对应的系统 Spark 应用程序作业。 这些系统作业在 SystemReservedJob-LibraryManagement 标题下运行。 Screenshot that highlights system reserved library job.
  3. 切换查看“驱动程序”和 stdout 日志。
  4. 在结果中,将会看到与依赖项安装相关的日志。 Screenshot that highlights system reserved library job results.

环境规范格式

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 文件创建环境

后续步骤