SynapseML (Synapse 机器学习) 预安装在 Microsoft Fabric。 如果需要特定版本,可以在 Fabric 笔记本中使用 %%configure 魔术命令来覆盖该版本。
快速入门
| 步骤 | Action | 时间估计 |
|---|---|---|
| 1 | 验证先决条件(工作区、笔记本) | 2 分钟 |
| 2 | 添加 %%configure 单元格以安装所需的 SynapseML 版本 |
1 分钟 |
| 3 | 验证已安装的版本 | 1 分钟 |
Prerequisites
在开始之前,请确保具有以下资源:
| 要求 | 详细信息 |
|---|---|
| Microsoft Fabric工作区 | 具有Fabric容量(F2 或更高版本)或Fabric试用版的工作区。 |
| Fabric笔记本 | 在Fabric数据科学或数据工程体验中创建新笔记本。 |
| Fabric运行时版本 | 了解工作区运行时版本。 SynapseML 和 Spark Avro JAR 版本必须与运行时中的 Spark 版本匹配。 请参阅Fabric 运行时版本。 |
Important
该 %%configure 命令使用新设置重启 Spark 会话。 在任何其他代码之前,在笔记本中将其作为 第一个单元格 运行。 如果在 Spark 会话启动后运行该会话,则 -f 标志会强制重启会话,并且所有变量和状态都将丢失。
注释
%%configure Fabric 笔记本中的 magic 命令仅获得有限的官方支持。 不能保证服务级别协议(SLA)或将来与官方版本的兼容性。 对于受支持的方法,请考虑使用Fabric环境自定义来管理库。
SynapseML 和Fabric运行时兼容性
选择与 Fabric 运行时 Spark 版本相匹配的 SynapseML 版本和 Spark Avro JAR:
| Fabric运行时 | Spark 版本 | SynapseML 版本 | Spark Avro JAR |
|---|---|---|---|
| 运行时 1.1 | 3.3 | 0.11.1 到 0.11.4 | spark-avro_2.12:3.3.1 |
| 运行时 1.2 | 3.4 | 1.0.4 到 1.0.8 | spark-avro_2.12:3.4.1 |
| 运行时 1.3 | 3.5 | 1.0.4 到 1.0.8 | spark-avro_2.12:3.5.1 |
可以在 Maven Central 上找到可用的 SynapseML 版本。
使用 %%configure 安装 SynapseML
该 %%configure -f 命令配置 Spark 会话属性,包括 Maven 包坐标。 标志 -f 强制重启现有会话。
Fabric Runtime 1.2(Spark 3.4) 的示例
将此代码粘贴到新Fabric笔记本的第一个单元格中,然后运行该单元格:
%%configure -f
{
"name": "synapseml",
"conf": {
"spark.jars.packages": "com.microsoft.azure:synapseml_2.12:1.0.8,org.apache.spark:spark-avro_2.12:3.4.1",
"spark.jars.repositories": "https://mmlspark.azureedge.net/maven",
"spark.jars.excludes": "org.scala-lang:scala-reflect,org.apache.spark:spark-tags_2.12,org.scalactic:scalactic_2.12,org.scalatest:scalatest_2.12,com.fasterxml.jackson.core:jackson-databind",
"spark.yarn.user.classpath.first": "true",
"spark.sql.parquet.enableVectorizedReader": "false",
"spark.sql.legacy.replaceDatabricksSparkAvro.enabled": "true"
}
}
若要安装其他版本,请替换以下版本中 spark.jars.packages的版本号:
-
synapseml_2.12:<version>:所需的 SynapseML 版本(例如1.0.4)。 -
spark-avro_2.12:<spark-version>:必须与Fabric运行时 Spark 版本匹配(请参阅兼容性表)。
Fabric Runtime 1.1(Spark 3.3) 的示例
%%configure -f
{
"name": "synapseml",
"conf": {
"spark.jars.packages": "com.microsoft.azure:synapseml_2.12:0.11.4,org.apache.spark:spark-avro_2.12:3.3.1",
"spark.jars.repositories": "https://mmlspark.azureedge.net/maven",
"spark.jars.excludes": "org.scala-lang:scala-reflect,org.apache.spark:spark-tags_2.12,org.scalactic:scalactic_2.12,org.scalatest:scalatest_2.12,com.fasterxml.jackson.core:jackson-databind",
"spark.yarn.user.classpath.first": "true",
"spark.sql.parquet.enableVectorizedReader": "false",
"spark.sql.legacy.replaceDatabricksSparkAvro.enabled": "true"
}
}
验证 Spark 配置
单元运行后,验证 Spark 会话是否接受了配置。 在新单元格中运行此代码:
print(spark.conf.get("spark.jars.packages"))
预期输出(对于 Runtime 1.2 示例):
com.microsoft.azure:synapseml_2.12:1.0.8,org.apache.spark:spark-avro_2.12:3.4.1
检查 SynapseML 版本
若要验证安装,请在新单元格中运行以下代码。 版本号应与已安装的版本匹配。
import synapse.ml.lightgbm
print(f"SynapseML version: {synapse.ml.lightgbm.__version__}")
预期输出(对于 Runtime 1.2 示例):
SynapseML version: 1.0.8
注释
在 SynapseML 1.0 及更高版本中,模块 synapse.ml.cognitive 已弃用。 改用 synapse.ml.services 来访问 AI 服务集成。
还原到默认版本
若要还原到预安装的 SynapseML 版本,请删除 %%configure 单元格并重启笔记本会话:
- 删除或注释掉
%%configure单元格。 - 在笔记本工具栏中选择会话>停止会话。
- 运行任何单元格以使用默认配置启动新会话。
配置参考
该 %%configure 块包括以下 Spark 属性:
| 财产 | Purpose |
|---|---|
spark.jars.packages |
SynapseML JAR 和 Spark Avro JAR 的 Maven 坐标。 |
spark.jars.repositories |
用于 SynapseML 构件的其他 Maven 存储库 URL。 |
spark.jars.excludes |
排除与预安装Fabric库冲突的可传递依赖项。 |
spark.yarn.user.classpath.first |
将用户提供的 JAR 优先于预安装的 JAR。 |
spark.sql.parquet.enableVectorizedReader |
禁用矢量化 Parquet 读取器以避免兼容性问题。 |
spark.sql.legacy.replaceDatabricksSparkAvro.enabled |
启用与旧版 Avro 读取器的兼容性。 |
Troubleshooting
%%configure 单元格未生效
原因:该 %%configure 单元格不是第一个要运行的单元格,或者 Spark 会话已处于活动状态。
修复:选择 会话>停止会话,然后首先运行 %%configure 单元格。
JAR 下载失败或超时
原因:Maven 存储库无法访问,或者版本坐标不正确。
修复:验证 Maven Central 上是否存在 SynapseML 版本。 检查版本 spark-avro 是否与 Spark 运行时版本匹配。
运行时出现 ClassNotFoundException 或 NoSuchMethodError
原因:SynapseML 版本与 Fabric 运行时 Spark 版本不兼容。
修复:使用 兼容性表 选择正确的版本组合。
ImportError:没有名为“synapse.ml”的模块
原因:未在笔记本环境中安装 SynapseML Python包装包。
修复:在新单元格中运行:
%pip install synapseml==1.0.8
将 1.0.8 替换为与你安装的 JAR 匹配的版本。
版本号与已安装的版本不匹配
原因:Python__version__属性来自 synapseml pip 包,该包可能与安装的 %%configureJAR 版本不同。
修复:验证 Spark 配置和 pip 包版本:
# Check the JAR version from Spark config
print("JAR packages:", spark.conf.get("spark.jars.packages"))
# Check the pip package version
import synapse.ml.lightgbm
print("Pip package version:", synapse.ml.lightgbm.__version__)
如果版本不匹配,请安装匹配的 pip 包:
%pip install synapseml==1.0.8