在 Microsoft Fabric 中管理 Apache Spark 库
库是预先编写的代码的集合,开发人员可以导入这些代码以提供额外的功能。 使用库时,无需从头开始编写代码即可完成常见的任务, 只需导入库并使用其函数和类来实现所需的功能,从而节省时间和精力。 Microsoft Fabric 提供了多种机制来帮助管理和使用库。
- 内置库:每个 Fabric Spark 运行时都提供了一组丰富的常用预安装库。 可以在 Fabric Spark 运行时中找到完整的内置库列表。
- 公共库:公用库源自当前受支持的 PyPI 和 Conda 等存储库。
- 自定义库:自定义库是你或你的组织构建的代码。 Fabric 支持 .whl、.jar 和 .tar.gz 等格式。 对于 R 语言,Fabric 仅支持 .tar.gz。 对于 Python 自定义库,请使用 .whl 格式。
工作区设置中的库管理
重要
不再支持在工作区设置中进行库管理。 要将工作区库和 Spark 属性迁移到默认环境,请参阅迁移工作区库和 Spark 属性。
库管理最佳做法摘要
以下场景说明了最佳做法。
场景 1:管理员为工作区设置默认库
要设置默认库,你必须是工作区的管理员。 管理员可以执行以下任务:
工作区中的笔记本和 Spark 作业定义将附加到“工作区设置”。 这会使用在工作区的默认环境中安装的库启动会话。
场景 2:暂留一个或多个代码项的库规范
此方法的一个好处是,可以节省运行始终需要通用库的代码所需的工作。 在环境中成功安装后,如果附加了环境,则这些库在所有 Spark 会话中都有效。
另一个好处是这种方法支持低于工作区级别的库配置粒度。 可以将一个环境附加到多个代码项目。 如果在一个需要相同库的工作区中有一部分笔记本或 Spark 作业定义,请将它们附加到同一环境。 工作区的管理员、成员或参与者可以创建、编辑和附加环境。
场景 3:交互式运行中的内联安装
如果需要在交互式笔记本中一次性使用未安装的库,则最方便的方法是内联安装。 借助 Fabric 中的内联命令,你可以使库在当前笔记本 Spark 会话中生效, 但不会在不同会话中暂留。
有权运行笔记本的用户可以在 Spark 会话中安装其他的库。
支持的库类型摘要
库类型 | 环境库管理 | 内联安装 |
---|---|---|
Python Public(PyPI 和 Conda) | 支持 | 支持 |
Python Custom (.whl) | 支持 | 支持 |
R Public (CRAN) | 不支持 | 支持 |
R 自定义 (.tar.gz) | 支持 | 支持 |
Jar | 支持作为自定义库 | 不支持 |
重要
对于 .jar 库当前存在一些限制。
- 对于 Scala 用户,.jar 文件可以在环境中成功安装,但对 Spark/Scala 会话不起作用。 安装将覆写具有不同库的内置库。 新的 .jar 在会话中正常工作。
- 对于 Python 用户,环境中当前不支持所有 .jar 文件。 这些文件可以在环境中成功安装,但在 PySpark 会话中无效。
- 可以改为在笔记本会话级别安装 .jar 文件。
内联安装
内联命令支持 Python 库和 R 库。
Python 内联安装
重启 Python 解释器以应用对库的更改。 任何运行命令单元之前定义的变量将丢失。 强烈建议将所有用于添加、删除或更新 Python 包的命令放置在笔记本的开头。
默认情况下,用于管理 Python 库的内联命令在笔记本管道运行中被禁用。 如果要为管道启用 %pip install
,请在笔记本活动参数中添加“_inlineInstallationEnabled”布尔参数,其等于 True。
注意
%pip install
可能不时导致不一致的结果。 建议在环境中安装库,并在管道中使用它。
在笔记本引用运行中,用于管理 Python 库的内联命令不受支持。 为了确保正确执行,建议从引用的笔记本中删除这些内联命令。
我们建议使用 %pip
,而不是 !pip
。 !pip
是 IPython 内置 shell 命令,存在以下限制:
!pip
仅在驱动程序节点上安装包,而不是在执行程序节点上安装。- 通过
!pip
安装的包不会影响与内置包的冲突,也不影响是否已将包导入笔记本。
但是,%pip
会处理这些场景。 通过 %pip
安装的库在驱动程序和执行程序节点上都可用,即使已经导入,库仍将有效。
提示
%conda install
命令安装新 Python 库所需的时间通常比 %pip install
命令更长。 它会检查完整的依赖项并解决冲突。
使用 %conda install
可以 提高可靠性和稳定性。 如果确定要安装的库与运行时环境中预安装的库不冲突,则可以使用 %pip install
。
有关所有可用的 Python 内联命令及其说明,请参阅 %pip 命令和 %conda 命令。
通过内联安装管理 Python 公共库
此示例将演示如何使用内联命令来管理库。 假设你想要使用 altair(一个强大的 Python 可视化库)进行一次性数据浏览。 假设工作区中未安装库。 以下示例使用 conda 命令来演示这些步骤。
可以使用内联命令在笔记本会话上启用 altair,而不会影响笔记本的其他会话或其他项目。
在笔记本代码单元中运行以下命令: 第一个命令会安装 altair 库。 此外还将安装 vega_datasets,其中包含可用于可视化的语义模型。
%conda install altair # install latest version through conda command %conda install vega_datasets # install latest version through conda command
该单元的输出指示安装结果。
通过在另一个笔记本单元中运行以下代码来导入包和语义模型:
import altair as alt from vega_datasets import data
现在,可以使用会话范围的 altair 库:
# load a simple dataset as a pandas DataFrame cars = data.cars() alt.Chart(cars).mark_point().encode( x='Horsepower', y='Miles_per_Gallon', color='Origin', ).interactive()
通过内联安装管理 Python 自定义库
可以将 Python 自定义库上传到附加到笔记本的湖屋的 文件 文件夹。 转到湖屋,选择“文件”文件夹中的 … 图标,然后上传自定义库。
上传后,可以使用以下命令将自定义库安装到笔记本会话。
# install the .whl through pip command
%pip install /lakehouse/default/Files/wheel_file_name.whl
R 内联安装
Fabric 支持使用 install.packages()
、remove.packages()
和 devtools::
命令来管理 R 库。 有关所有可用的 R 内联命令及其说明,请参阅 install.packages 命令和 remove.package 命令。
通过内联安装管理 R 公共库
此示例将演示安装 R 公共库的步骤。
若要安装 R 源库:
在笔记本功能区中将工作语言切换到 SparkR (R)。
在笔记本单元中运行以下命令以安装 caesar 库。
install.packages("caesar")
现在,可以使用 Spark 作业与会话范围的 caesar 库进行交互。
library(SparkR) sparkR.session() hello <- function(x) { library(caesar) caesar(x) } spark.lapply(c("hello world", "good morning", "good evening"), hello)
通过内联安装管理 Jar 库
通过以下命令在笔记本会话中为 .jar 文件提供支持。
%%configure -f
{
"conf": {
"spark.jars": "abfss://<<Lakehouse prefix>>.dfs.fabric.microsoft.com/<<path to JAR file>>/<<JAR file name>>.jar",
}
}
代码单元使用 Lakehouse 存储作为示例。 在笔记本资源管理器中,可以复制完整的文件 ABFS 路径并在代码中替换。