在 Fabric 上安裝不同版本的 SynapseML

SynapseML(Synapse 機器學習)已預載於 Microsoft Fabric 上。 如果你需要特定版本,可以用 Fabric 筆記本裡的%%configure魔法指令來覆寫。

快速入門

步驟 Action 時間預估
1 確認前置條件(工作區、筆記本) 2 分鐘
2 新增 %%configure 儲存格來安裝你需要的 SynapseML 版本 1分鐘
3 確認已安裝的版本 1分鐘

Prerequisites

在開始之前,請確保你擁有以下資源:

需求 Details
Microsoft Fabric 工作空間 具有 Fabric 容量(F2 或更高)或 Fabric 試用版的工作空間。
Fabric筆記本 Fabric 資料科學資料工程體驗中建立一本新筆記本。
Fabric 執行環境版本 了解你的工作區執行版本。 SynapseML 和 Spark Avro JAR 版本必須在執行時間內與 Spark 版本相符。 請參閱 Fabric 執行時版本

Important

%%configure 指令會使用新設定重新啟動 Spark 工作階段。 先把它當作筆記本 的第一個儲存格 執行,排在其他程式碼之前。 如果你在 Spark session 開始後執行, -f 旗標會強制重新啟動 session,所有變數和狀態都會遺失。

注意

Fabric 筆記本中的 %%configure 魔法指令僅提供有限的官方支援。 無法保證有服務水準協議(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 配置

當 cell 執行後,確認 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 資料格,然後重新啟動 Notebook 工作階段:

  1. 刪除或將 %%configure 儲存格註解化。
  2. 在筆記本工具列中選擇 「會話>停止會話 」。
  3. 執行任何儲存格,即可使用預設設定開始新的工作階段。

設定參考

%%configure 街區包含以下 Spark 物業:

房產 Purpose
spark.jars.packages SynapseML JAR 與 Spark Avro JAR 的 Maven 座標。
spark.jars.repositories 額外的 Maven 儲存庫 URL,用於 SynapseML 產物。
spark.jars.excludes 排除與預先安裝的 Fabric 函式庫衝突的傳遞相依性。
spark.yarn.user.classpath.first 優先使用使用者提供的 JARs 而非預裝的。
spark.sql.parquet.enableVectorizedReader 停用向量化 Parquet 讀取器以避免相容性問題。
spark.sql.legacy.replaceDatabricksSparkAvro.enabled 啟用舊版 Avro 閱讀器相容性。

Troubleshooting

%%configure 儲存格不生效

原因:該 %%configure 儲存格不是第一個執行的儲存格,或者 Spark 工作階段已處於作用中。

修正方式:選取 工作階段>停止工作階段,然後先執行 %%configure 儲存格。

JAR 下載失敗或逾時

原因:Maven 儲存庫無法存取,或是版本座標錯誤。

修正:確認 SynapseML 版本是否存在於 Maven Central。 檢查這個 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