本文比較了 Azure Synapse Spark 與 Fabric Spark 在 Spark 池、配置、函式庫、筆記本及 Spark 工作定義(SJD)上的差異。
| 類別 | Azure Synapse Spark | 織物火花 |
|---|---|---|
| Spark 集區 | Spark 集區 - - |
起始池(預熱) / 自訂池 V 順序 高並行 |
| Spark 設定 | 集區層級 Notebook 或 Spark 工作定義層級 |
環境層級 Notebook 或 Spark 工作定義層級 |
| Spark 程式庫 | 工作區層級套件 集區層級套件 內嵌套件 |
- 環境程式庫 內嵌程式庫 |
| 資源 | 筆記本 (Python、Scala、Spark SQL、R、.NET) Spark 工作定義 (Python、Scala、.NET) Synapse 管線 管線活動(筆記本,Spark 工作定義) |
筆記本 (Python、Scala、Spark SQL、R) Spark 工作定義 (Python、Scala、R) Data Factory 資料管道 管線活動 (筆記本,Spark 工作定義) |
| 資料 | 主要儲存體 (ADLS Gen2) 資料落地 (叢集/區域型) |
主要儲存體 (OneLake) 資料落地 (容量/區域型) |
| 中繼資料 | 內部 Hive 中繼存放區 (HMS) 外部 HMS (使用 Azure SQL DB) |
內部 HMS (Lakehouse) - |
| 連線 | 連接器類型 (連結服務) 資料來源 資料來源連線。 使用工作區身分識別 |
連接器類型(資料移動與轉換服務) 資料來源 - |
| 安全性 | RBAC 和存取控制 儲存體 ACL (ADLS Gen2) 私人連結 為網路隔離而設的受管虛擬網路(VNet) Synapse 工作區身分識別 資料外流保護 (DEP) 服務標籤 金鑰保存庫 (透過 mssparkutils/連結服務) |
RBAC 和存取控制 OneLake RBAC 私人連結 受管理虛擬網路(VNet) 工作區身分識別 - 服務標籤 Key Vault (透過 Notebookutils) |
| DevOps | Azure DevOps 整合 CI/CD (無內建支援) |
Azure DevOps 整合 部署管線 |
| 開發人員體驗 | IDE 整合 (IntelliJ) Synapse Studio UI 共同作業 (工作區) Livy API API/SDK mssparkutils |
IDE 整合 (VS Code) Fabric UI 共同作業 (工作區與共用) Livy API API/SDK notebookutils |
| 記錄和監視 | Spark Advisor 內建監視集區和工作 (透過 Synapse Studio) Spark 歷程記錄伺服器 Prometheus/Grafana 記錄分析 儲存體帳戶 事件中樞 |
Spark 顧問 內建監視集區和工作 (透過 監視中樞) Spark 歷程記錄伺服器 - 日誌分析 儲存體帳戶 事件中樞 |
| 業務持續性和災害復原 (BCDR) | BCDR (資料) ADLS Gen2 | BCDR (資料) OneLake |
選擇的時機:使用 Fabric Spark 進行統一分析,搭配 OneLake 儲存、內建 CI/CD 管線及依據容量的擴展。 當你需要 GPU 加速池、外部 Hive Metastore 或 JDBC 連線時,使用 Azure Synapse Spark。
Fabric 的主要限制
- 筆記本中的 DMTS:資料移動與轉換服務無法用於筆記本或 Spark 工作定義
- 金鑰保險庫的受控身分識別:不支援在筆記本中使用
- 外部蜂巢 Metastore:不支援
- GPU 加速池:不可用
- .NET for Spark(C#):不支援
更多布料相關考量
Spark 集區比較
以下資料表比較了 Azure Synapse Spark 和 Fabric Spark。
| Spark 設定 | Azure Synapse Spark | 織物火花 |
|---|---|---|
| 活水池(預熱實例) | - | 是的,入門池 |
| 自訂集區 | Yes | Yes |
| Spark 版本 (執行階段) | 2.4、3.1、3.2、3.3、3.4 | 3.4, 3.5, 4.0 |
| Autoscale | Yes | Yes |
| 執行程式動態配置 | 支援,最多 200 個 | 支援,容量型 |
| 可調整的節點大小 | 支援,3 - 200 | 支援,1 個容量型 |
| 最小節點組態 | 3 個節點 | 1 個節點 |
| 節點大小系列 | 記憶體最佳化,GPU 加速 | 記憶體最佳化 |
| 節點大小 | Small-XXXLarge | Small-XXLarge |
| 自動暫停 | 支援,可自訂至少 5 分鐘 | 支援,不可自訂 2 分鐘 |
| 高並行 | No | Yes |
| V 順序 | No | Yes |
| Spark 自動調整 | No | Yes |
| 原生執行引擎 | No | Yes |
| 並行限制 | 已修正 | 容量型變數 |
| 多個 Spark 集區 | Yes | 支援 (環境) |
| 智慧型快取 | Yes | Yes |
| API/SDK 支援 | Yes | Yes |
- 執行時間:Fabric 不支援 Spark 3.3 及更早版本。 Fabric Spark 在 執行時 1.2 中支援 Spark 3.4 搭配 Delta 2.4,Spark 3.5 在 執行時 1.3 中支援 Delta 3.1,以及在 執行時 2.0 中支援 Spark 4.0 與 Delta 4.0。
何時選擇:使用 Fabric Spark 池進行快速啟動(Starter Pools)、單節點任務、高並發會話及 V-Order 優化。 當你需要 GPU 加速或固定擴展到 200 節點時,可以使用 Azure Synapse 池。
Spark 執行時版本
支援 Fabric Spark 的版本:
Fabric 不支援 Spark 2.4、3.1 或 3.2。
可調整的節點大小
Azure Synapse Spark 池可擴展至 200 個節點,不論節點大小。 在 Fabric 中,節點的最大數量取決於節點大小與配置容量(SKU)。
織體容量轉換:2 Spark vCores = 1 容量單元。 公式:容量中的總 vCore 數 ÷ 每節點大小的 vCore 數 = 最大可用節點數。
例如,SKU F64 提供 64 個容量單元(128 個 Spark vCore )。 下表顯示 F64 的節點限制:
| Spark 集區大小 | Azure Synapse Spark | Fabric Spark (自訂集區、SKU F64) |
|---|---|---|
| 小型(4 個 vCorres) | 最小:3,最大:200 | 最小:1,最大:32 |
| 中等(8 個 vCores) | 最小:3,最大:200 | 最小:1,最大:16 |
| 大型(16 個 vCores) | 最小:3,最大:200 | 最小:1,最大:8 |
| X-Large(32 個 vCores) | 最小:3,最大:200 | 最小:1,最大:4 |
| XX-Large(64 個虛擬核心) | 最小:3,最大:200 | 最小:1,最大:2 |
如需詳細資訊,請參閱 Spark 計算。
節點大小
Fabric Spark pool 僅支援 記憶體優化(Memory Optimized node)節點家族。 Azure Synapse 中可用的 GPU 加速池在 Fabric 中不被支援。
節點大小比較(XX-Large):
- Azure Synapse: 432 GB memory
- Fabric:512 GB 記憶體,64 vCore
從 Small 到 X-Large 的節點大小在 Azure Synapse 和 Fabric 中,vCore 和記憶體都完全相同。
自動暫停行為
自動暫停設定比較:
- Azure Synapse:可設定的閒置超時,最少 5 分鐘
- Fabric:修復了會話結束後的 2 分鐘自動暫停(無法設定),預設會話逾時為 20 分鐘
高並行
Fabric 支援筆記本的高 並行模式 ,允許多個使用者共享單一 Spark 會話。 Azure Synapse 不支援這個功能。
並行限制
Azure Synapse Spark 限制(固定):
- 每個池有 50 個並行工作,每個池有 200 個排隊工作
- 每一個工作池最多有 250 個活躍任務,每一個工作空間最多有 1,000 個活躍任務。
Fabric Spark 限制(基於 SKU)
- 同時工作的數量依容量 SKU 而異,範圍為 1 到 512。
- 基於動態儲備的節流管理高峰使用量
如需詳細資訊,請參閱 Microsoft Fabric Spark 中的並行限制和佇列。
多個 Spark 集區
在 Fabric 中,使用 環境 來設定並為每個筆記本或 Spark 工作定義選擇不同的 Spark 池。
注意
Spark 組態比較
火花配置適用於兩個層級:
- 環境層級:環境中所有 Spark 作業的預設設定
- 行內層級:筆記本或 Spark 作業定義中的每次會話配置
| Spark 設定 | Azure Synapse Spark | 織物火花 |
|---|---|---|
| 環境層級 | 支援,集區 | 支援,環境 |
| 內嵌 | Yes | Yes |
| 匯入/匯出 | Yes | 支援 (.yml 來自環境) |
| API/SDK 支援 | Yes | Yes |
何時選擇:兩個平台都支援環境與線上配置。 Fabric 使用環境而非池級設定。
-
內嵌語法:在 Fabric 中用於
spark.conf.set(<conf_name>, <conf_value>)會話層級設定。 批次作業則使用 SparkConf。 -
不可變設定:有些 Spark 設定無法修改。 錯誤訊息:
AnalysisException: Can't modify the value of a Spark config: <config_name> - V-Order:在 Fabric 中預設啟用;Parquet 檔案的寫入時間優化。 詳見 V-Order。
- 優化寫入:在 Fabric 中預設啟用;在 Azure Synapse 中預設被停用。
Spark 程式庫比較
Spark 函式庫在三個層級適用:
- Workspace 層級:僅在 Azure Synapse 中可用
- 環境層級:環境中的所有筆記本與 Spark 工作定義皆可存取的函式庫
- Inline:筆記型電腦啟動時安裝的會話專用函式庫
| Spark 程式庫 | Azure Synapse Spark | 織物火花 |
|---|---|---|
| 工作區層級 | Yes | No |
| 環境層級 | 支援,集區 | 支援,環境 |
| 內嵌 | Yes | Yes |
| 匯入/匯出 | Yes | Yes |
| API/SDK 支援 | Yes | Yes |
何時選擇:兩個平台都支援環境與線上函式庫。 Fabric 不支援工作區層級的套件。
- 內建函式庫:Fabric 與 Azure Synapse 執行時共用共用 Spark 核心,但函式庫版本有所不同。 有些程式碼可能需要重新編譯或自訂函式庫。 請參閱 Fabric 執行時函式庫。
注意
筆記本比較
Notebook 和 Spark 工作定義是在 Fabric 中開發 Apache Spark 工作的主要程式碼項目。 Azure Synapse Spark 筆記本和 Fabric Spark 筆記本之間有一些差異:
| 筆記本功能 | Azure Synapse Spark | 織物火花 |
|---|---|---|
| 匯入/匯出 | Yes | Yes |
| 工作階段組態 | 是的。 使用者介面與內嵌介面 | 是的。 UI(環境)與內聯 |
| IntelliSense | Yes | Yes |
| mssparkutils | Yes | Yes |
| 筆記本資源 | No | Yes |
| 共同作業 | No | Yes |
| 高並行 | No | Yes |
| 適用於 Spark C# 的 .NET | Yes | No |
| 管線活動支援 | Yes | Yes |
| 內建排程執行支援 | No | Yes |
| API/SDK 支援 | Yes | Yes |
何時選擇:使用 Fabric 筆記本進行協作、高併發工作環境、內建排程功能及筆記本資源。 如果你需要 .NET for Spark(C#),可以用 Azure Synapse 筆記本。
-
notebookutils.credentials:在 Fabric 中僅支援
getToken和getSecret(DMTS 連線不可用)。 - 筆記本資源:Fabric 提供類 Unix 檔案系統用於管理檔案。 請參閱 如何使用筆記本。
- 高並發性:Azure Synapse 中 ThreadPoolExecutor 的替代方案。 請參見 「配置高並發模式」。
- .NET for Spark:將 C#/F# 工作負載遷移到 Python 或 Scala。
- 連結服務:外部資料來源連線可替換為 Spark 函式庫。
注意
Spark 工作定義比較
Spark 工作定義重要考量:
| Spark 工作功能 | Azure Synapse Spark | 織物火花 |
|---|---|---|
| PySpark | Yes | Yes |
| Scala | Yes | Yes |
| 適用於 Spark C# 的 .NET | Yes | No |
| SparkR | No | Yes |
| 匯入/匯出 | 支援 (UI) | No |
| 管線活動支援 | Yes | Yes |
| 內建排程執行支援 | No | Yes |
| 重試原則 | No | Yes |
| API/SDK 支援 | Yes | Yes |
何時選擇:使用 Fabric Spark 工作定義來支援 SparkR、內建排程及重試政策。 如果你需要 .NET for Spark(C#)或基於 UI 的匯入/匯出,請使用 Azure Synapse。
- 支援檔案:.py、。R 和 .jar 檔案,包含參考檔案、命令列參數和 lakehouse 參考。
- 匯入/匯出:基於 UI 的 JSON 匯入/匯出僅在 Azure Synapse 中提供。
- 重試政策:啟用 Spark 結構化串流工作的無限次執行。
- .NET for Spark:將 C#/F# 工作負載遷移到 Python 或 Scala。
Hive 中繼存放區 (HMS) 比較
| HMS 類型 | Azure Synapse Spark | 織物火花 |
|---|---|---|
| 內部 HMS | Yes | 支援 (Lakehouse) |
| 外部 HMS | Yes | No |
選擇的條件:如果基於 Lakehouse 的內部 HMS 符合你的需求,請使用 Fabric。 如果你需要外部 Hive Metastore(Azure SQL DB)或 Catalog API 存取,請使用 Azure Synapse。
相關內容
- 深入了解 Spark 集區、組態、程式庫、筆記本和 Spark 工作定義的移轉選項
- 移轉資料和管線
- 移轉 Hive 中繼存放區中繼資料