在 Fabric 上安装不同版本的 SynapseML

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 单元格并重启笔记本会话:

  1. 删除或注释掉 %%configure 单元格。
  2. 在笔记本工具栏中选择会话>停止会话
  3. 运行任何单元格以使用默认配置启动新会话。

配置参考

%%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