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 工作階段:
- 刪除或將
%%configure儲存格註解化。 - 在筆記本工具列中選擇 「會話>停止會話 」。
- 執行任何儲存格,即可使用預設設定開始新的工作階段。
設定參考
該 %%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