管理Fabric环境中的库

Microsoft Fabric环境为运行 Spark 作业提供灵活的配置。 库为笔记本和 Spark 作业定义提供可重用代码。 除了每个 Spark 运行时附带的内置库外,还可以在Fabric环境中安装公共库和自定义库。

注意

导航到环境所在的工作区,选择环境和库管理选项位于左侧导航窗格中。 如果没有创建环境,请参阅 创建、配置和使用 Fabric 中的环境。

内置库

在Fabric中,每个运行时版本都预加载了一组特选的内置库,这些库针对Python、R、Java和 Scala 的性能、兼容性和安全性进行了优化。 通过环境中的 内置 库页,可以根据所选运行时浏览和搜索这些预安装的库。

这些库默认安装在每个环境中,无法更改。 在此环境中运行你的笔记本或 Spark 作业定义时,可以使用这些功能。

若要查看预安装的包的列表及其每个运行时的版本,请参阅 Fabric 中的 Apache Spark 运行时。

注意

针对单个笔记本的解决方案,例如笔记本资源文件夹和在代码单元中使用的内嵌安装命令(如 %pip install%conda install),都是手动的,适用于会话范围或笔记本范围,不受环境发布的影响。 在交互式开发过程中,使用它们进行快速的一次性库添加。

重要

Fabric支持管理包的不同方法。 有关更多选项和最佳实践,请参阅Fabric 中的 Manage Apache Spark 库。 如果工作区使用工作区 出站访问保护托管 VNet 等网络功能,则会阻止对公共存储库(如 PyPI)的访问。 有关指南,请参阅在 Fabric 中管理具有有限网络访问权限的库。 如果内置库版本不满足你的需求,可以通过在外部存储库部分指定所需版本或通过上传自己的自定义包来替代它们。

外部存储库

可以从公共存储库(如 PyPI、Conda 和 Maven)或专用存储库添加库。 源和发布模式选项因存储库类型而异。 添加库时,选择发布模式(完整或快速)。 有关每个模式工作原理的详细信息,请参阅 库的“选择发布模式”。

显示“环境外部存储库库”屏幕的屏幕截图。

从公共Python存储库添加一个Python库

公共存储库允许从 PyPI 或 Conda 安装包。

  1. “外部存储库 ”选项卡中,选择“ 添加库”。

  2. 从公共存储库中选择添加库

  3. 选择源(PyPI 或 Conda)。

  4. 在搜索框中输入库名称。 键入时,搜索框会建议常用库,但列表受到限制。 如果未看到库,请输入其全名。

    显示从公共存储库添加库的过程的屏幕截图。

    如果找到库名称,则会看到可用版本。

  5. 选择版本,然后保存并发布环境。

从 Maven 添加库

Fabric支持直接从 Maven 存储库安装库。 为此,请创建一个 POM 文件 ,其中列出了要安装的 Maven 依赖项,并将其上传到环境。

  1. “外部存储库 ”选项卡中,选择“ 导入 pom.xml”。

  2. 从本地目录中选择 pom.xml 文件。

注意

  • 仅 Spark 4.0 及更高版本中支持导入 pom.xml。
  • 仅完全模式支持导入 pom.xml。 在此模式下,Fabric对 Maven 包执行依赖项解决和冲突检测。 如果任何库与运行时不兼容,发布后会出现错误。
  • 启用了出站访问保护的工作区不支持导入 pom.xml。 在这些工作区中,从 Maven 下载所需的库,并将其上传为自定义库。

从私有仓库添加库

专用存储库允许使用 pip 或 conda 安装包。

  1. “外部存储库 ”选项卡中,选择“ 添加库”。

  2. 选择从私有存储库添加库

  3. 选择源(pip 或 conda)。

  4. 输入库名称和版本。 请确保 准确输入库名称和版本,因为不支持在键入时在专用存储库中搜索库。 包信息不正确会导致发布失败。

从Azure项目源中添加库

Azure工件提要可以设定范围为项目(专用)或组织(公共)。 Fabric支持这两个范围。 无论包源在Azure DevOps中的可见性如何,Fabric始终通过经过身份验证的Azure Data Factory连接进行连接,因此即使是公共包源也需要设置连接。

注意

Spark 3.5 支持从 Azure 工件源安装类库。 在启用了Private Link或出站访问保护的工作区中不支持它。

为Azure项目源设置连接

环境不会直接存储凭据。 而是通过 数据工厂连接器 创建连接,并通过 YML 文件中的连接 ID 引用它。 详细了解 Azure 工件源

  1. 选择 Fabric 门户右上角的 Settings 齿轮图标,然后选择 Manage 连接和网关

    显示环境外部存储库连接器入口点的屏幕截图。

  2. 创建新的连接。 选择+ 新建,然后选择Cloud作为类型,然后选择Azure项目源(预览)作为连接类型。

    截图显示如何创建新的云连接,并选择Azure制品源(预览版)。

  3. 输入源 URL 和个人访问令牌(PAT),其中包含 打包 > 读取 范围。

  4. 选择允许像笔记本这样的 Code-First 工件访问此连接(预览)

    显示创建新连接器屏幕的示例的屏幕截图。

  5. 选择 “创建” 以保存连接。 应在连接列表中看到它。

  6. 创建后记录连接 ID。 下一步骤需要用到它。

准备并上传 YML 文件

创建一个 YML 文件,其中列出你想要安装的包,并引用连接 ID,而不是源 URL 和凭据。 Fabric使用连接ID在发布时对您馈送的包进行身份验证和提取。

标准 pip 配置会直接引用源 URL 和凭据:

dependencies:
  - pip:
    - fuzzywuzzy==0.18.0
    - wordcloud==1.9.4
    - --index-url <URL_TO_THE_AZURE_ARTIFACT_FEED_WITH_AUTH>

对于Fabric,请将 URL 替换为前面记录的连接 ID:

dependencies:
  - pip:
    - fuzzywuzzy==0.18.0
    - wordcloud==1.9.4
    - --index-url <YOUR_CONNECTION_ID>

将 YML 文件直接上传到环境,或切换到 YML 编辑器视图 并粘贴内容。 发布环境时,Fabric从你的数据源中读取包并保留这些包。 如果在 Azure Artifact Feed 中更新包,重新发布环境以获取最新版本。

注意

  • “列表”视图中,可以从现有源连接中添加、删除或编辑库。 若要添加、删除或编辑源连接本身,请切换到 YML 编辑器视图 并直接更新 YML 文件。
  • 可以在 YML 文件中指定 多个源 。 Fabric按列出的顺序进行搜索,直到找到软件包。 即使未在 YML 文件中包含,诸如 PyPI 和 Conda 等公共存储库也会被自动最后搜索。
  • 如果在任何列出的源中找不到 YML 文件中的包,则发布会失败。 在发布之前,请仔细检查包名称和版本。

管理外部库

添加外部库后,可以从 “外部存储库 ”部分管理它们。

  • 筛选器 - 使用包名称作为关键字来筛选外部库列表。
  • 更新 – 选择库以在列表视图中更新其 名称版本源类型 。 在 YML 编辑器视图中,还可以更新 Azure 构件传送通道连接 ID
  • 删除 – 将鼠标悬停在库行上以查看 “删除 ”选项,或选择多个库,然后选择“ 删除”。 还可以使用 YML 编辑器视图删除库。
  • 查看依赖项 – 将鼠标悬停在公共存储库库上,然后选择 “查看依赖项 ”以提取其依赖项树。 依赖项信息不适用于Azure项目源中的专用库或库。
  • 导出到.yml – 将完整的外部库列表导出到 .yml 文件并将其下载到本地目录。

自定义库

自定义库是指由你或贵组织构建的代码。 Fabric支持 .whl.py.jar.tar.gz 格式的自定义库文件。 与外部库一样,上传自定义包时,可以选择发布模式(完整或快速)。 有关详细信息,请参阅 选择库的发布模式

注意

Fabric仅支持 R 语言的 .tar.gz 文件。 将 .whl.py 文件格式用于Python语言。

使用“自定义库”页中的“上传下载”按钮从本地目录添加库或在本地下载库。

显示“环境自定义库”屏幕的屏幕截图。

若要删除库,请将鼠标悬停在其行上并选择回收站图标,或选择多个库,然后选择“ 删除”。

选择库的发布模式

添加外部库或自定义库时,请选择发布模式。 完全模式 适用于所有库源和工作负荷类型。 快速模式 适用于公共存储库和大多数自定义库格式,但仅在运行笔记本时可用。

显示库管理屏幕中不同模式的屏幕截图。

下表显示了每个库源支持的发布模式。

库源 完整模式 快速模式
公共存储库(PyPI/Conda) 是的 是的
专用存储库(pip/conda) 是的
Azure工件源 是的
自定义.whl.py.tar.gz 是的 是的
自定义 .jar 是的

根据需要选择正确的模式

使用依赖项复杂性和工作负荷类型来确定哪种模式适合。

  • 完整模式 可解析依赖项、验证兼容性,并在发布期间创建稳定的库快照。 该快照会在新会话启动时部署。 最适合大型依赖项集(例如,超过 10 个包)、生产工作负荷和管道。 发布通常需要 3 到 6 分钟;会话启动为依赖项部署添加 1 到 3 分钟,具体取决于依赖项大小。 若要在实现大约 5 秒的会话启动时保持稳定的快照,请结合使用完整模式和 自定义实时池
  • 快速模式 在发布期间跳过依赖项处理,而是在笔记本会话启动时安装包。 最适合较轻的依赖项集、快速迭代和早期试验。 在大约 5 秒内发布完成;库安装在会话开始时发生。

可以在开发期间混合模式。 常见的模式是在快速模式中迭代,然后将经过验证的依赖项转移到完整模式,以实现稳定的生产快照。 您还可以保留现有的完整模式快照不变,然后在快速模式下叠加新的测试包——完整模式快照先部署,然后再叠加快速模式包。

模式限制和行为

使用发布模式时,请记住这些约束。

  • 快速模式仅适用于笔记本,而不适用于 Spark 作业定义。
  • 若要在模式之间移动自定义库,请下载文件,将其从当前模式中删除,然后将其上传到目标模式。 不支持模式之间的直接传输。
  • 安装日志不会显示在笔记本中。 使用 监视(级别 2) 跟踪进度和故障排除。
  • 当这两种模式都包含包时,完整模式快照优先应用。 快速模式包会安装在上层,并覆盖具有相同名称的任何完整模式包。
  • 当跨模式存在重复包时,在当前笔记本会话中,快速模式版本优先于完整模式版本。 启动新会话会首先重新应用完整模式快照,然后在顶部安装快速模式包。
  • 运行该语言的第一个代码单元时,将安装快速模式包。 例如,当第一个Python单元运行时会安装Python包,当第一个R单元运行时会安装R包。