比較 Fabric 資料工程師 和 Azure Synapse Spark
Fabric 資料工程師與 Azure Synapse Spark 之間的比較簡要介紹了主要功能,深入分析了各種類別,其中包括 Spark 集區、組態、程式庫、筆記本和 Spark 工作定義。
以下資料表比較了不同類別的 Azure Synapse Spark 和 Fabric Spark:
類別 | Azure Synapse Spark | Fabric Spark |
---|---|---|
Spark 集區 | Spark 集區 - - |
入門集區 / 自訂集區 V 順序 高並行 |
Spark 設定 | 集區層級 Notebook 或 Spark 工作定義層級 |
環境層級 Notebook 或 Spark 工作定義層級 |
Spark 程式庫 | 工作區層級套件 集區層級套件 內嵌套件 |
- 環境程式庫 內嵌程式庫 |
資源 | 筆記本 (Python、Scala、Spark SQL、R、.NET) Spark 工作定義 (Python、Scala、.NET) Synapse 資料管線 管線活動 (筆記本、SJD) |
筆記本 (Python、Scala、Spark SQL、R) Spark 工作定義 (Python、Scala、R) Data Factory 資料管線 管線活動 (筆記本、SJD) |
資料 | 主要儲存體 (ADLS Gen2) 資料落地 (叢集/區域型) |
主要儲存體 (OneLake) 資料落地 (容量/區域型) |
中繼資料 | 內部 Hive 中繼存放區 (HMS) 外部 HMS (使用 Azure SQL DB) |
內部 HMS (Lakehouse) - |
連線 | 連接器類型 (連結服務) 資料來源 資料來源連線。 使用工作區身分識別 |
連接器類型 (DMTS) 資料來源 - |
安全性 | RBAC 和存取控制 儲存體 ACL (ADLS Gen2) 私人連結 受控 VNet (網路隔離) Synapse 工作區身分識別 資料外流保護 (DEP) 服務標籤 金鑰保存庫 (透過 mssparkutils/連結服務) |
RBAC 和存取控制 OneLake RBAC 私人連結 受控 VNet 工作區身分識別 - 服務標籤 金鑰保存庫 (透過 mssparkutils) |
DevOps | Azure DevOps 整合 CI/CD (無內建支援) |
Azure DevOps 整合 部署管線 |
開發人員體驗 | IDE 整合 (IntelliJ) Synapse Studio UI 共同作業 (工作區) Livy API API/SDK mssparkutils |
IDE 整合 (VS Code) Fabric UI 共同作業 (工作區與共用) - API/SDK mssparkutils |
記錄和監視 | Spark Advisor 內建監視集區和工作 (透過 Synapse Studio) Spark 歷程記錄伺服器 Prometheus/Grafana 記錄分析 儲存體帳戶 事件中樞 |
Spark Advisor 內建監視集區和工作 (透過 監視中樞) Spark 歷程記錄伺服器 - - - - |
業務持續性和災害復原 (BCDR) | BCDR (資料) ADLS Gen2 | BCDR (資料) OneLake |
考量與限制:
DMTS 整合:無法透過筆記本和 Spark 工作定義使用 DMTS。
工作負載層級 RBAC:Fabric 支援四個不同的工作區角色。 如需詳細資訊,請參閱<Microsoft Fabric 工作區中的角色>。
受控識別:Fabric 目前不支援在筆記本中使用 Azure KeyVault 的工作區身分識別或受控識別來執行筆記本和 Spark 工作定義。
CI/CD:可以使用 Fabric API/SDK 和部署管線。
Livy API 以及如何提交和管理 Spark 工作:Livy API 位於藍圖中,但尚未在 Fabric 中公開。 必須使用 Fabric UI 建立筆記本和 Spark 工作定義。
Spark 記錄和計量:在 Azure Synapse 中,可以將 Spark 記錄和計量發出至自己的儲存體,例如記錄分析、Blob 和事件中樞。 也可以從 API 取得工作區的 Spark 應用程式清單。 目前,這兩項功能都無法在 Fabric 中使用。
其他考量:
- JDBC:目前無法在 Fabric 中使用 JDBC 連線支援。
Spark 集區比較
以下資料表比較了 Azure Synapse Spark 和 Fabric Spark。
Spark 設定 | Azure Synapse Spark | Fabric Spark |
---|---|---|
即時集區 (預熱執行個體) | - | 支援,入門集區 |
自訂集區 | Yes | Yes |
Spark 版本 (執行階段) | 2.4、3.1、3.2、3.3、3.4 | 3.3、3.4、3.5 |
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 2.4、3.1 和 3.2 版本。 Fabric Spark 支援在運行時間 1.1 內具有 Delta 2.2 的 Spark 3.3、運行時間 1.2 內具有差異 2.4 的 Spark 3.4 和運行時間 1.3 內具有 Delta 3.1 的 Spark 3.5。
自動縮放:在 Azure Synapse Spark 中,不論節點大小如何,集區都可以擴大至 200 個節點。 在 Fabric 中,節點數目上限受制於節點大小和佈建容量。 請參閱下列 F64 SKU 範例。
Spark 集區大小 Azure Synapse Spark Fabric Spark (自訂集區、SKU F64) Small 最小:3,最大:200 最小:1,最大:32 中 最小:3,最大:200 最小:1,最大:16 大型 最小:3,最大:200 最小:1,最大:8 X-Large 最小:3,最大:200 最小:1,最大:4 XX-Large 最小:3,最大:200 最小:1,最大:2 可調整的節點大小:在 Azure Synapse Spark 中,最多可以進入 200 個節點。 在 Fabric 中,在自訂 Spark 集區中能擁有的節點數取決於節點大小和 Fabric 容量。 容量是一項度量值,可衡量在 Azure 中可以使用的計算能力。 其中一種計算方法,兩個 Spark 虛擬核心 (Spark 的計算能力單位) 等於一個容量單位。 例如,Fabric 容量 SKU F64 具有 64 個容量單位,相當於 128 個 Spark 虛擬核心。 因此,如果選擇小型節點大小,集區中最多可以有 32 個節點 (128/4 = 32)。 然後,容量中的虛擬核心總數/每個節點大小的虛擬節點 = 可用節點總數。 如需詳細資訊,請參閱 Spark 計算。
節點大小系列:Fabric Spark 集區目前僅支援記憶體最佳化點大小系列。 如果在 Azure Synapse 中使用 GPU 加速的 SKU Spark 集區,則無法在 Fabric 中使用。
節點大小:XX-Large 節點大小在 Azure Synapse 中隨附 432 GB 的記憶體,而相同節點大小在 Fabric 中有 512 GB,包括 64 個虛擬核心。 其餘節點大小 (小型到 X-Large) 在 Azure Synapse 和 Fabric 中都有相同的虛擬核心和記憶體。
自動暫停:如果在 Azure Synapse Spark 中啟用該功能,Apache Spark 集區會在指定的閒置時間之後自動暫停。 此設定可在 Azure Synapse 中設定 (至少 5 分鐘),但工作階段過期後,自訂集區在 Fabric 中有 2 分鐘的不可自訂預設自動暫停持續時間。 Fabric 中的預設工作階段過期設定為 20 分鐘。
高並行:Fabric 在筆記本中支援高並行。 如需詳細資訊,請參閱<Fabric Spark 中的高並行模式>。
並行限制:就並行而言,對於每個 Spark 集區,Azure Synapse Spark 限制同時執行的工作數為 50 個,限制處於佇列狀態的工作數為 200 個。 對於作用中工作上限,每個 Spark 集區為 250 個,每個工作區為 1000 個。 在 Microsoft Fabric Spark 中,容量 SKU 會決定並行限制。 對範圍從 1 到 512 的最大並行工作,SKU 有不同的限制。 此外,Fabric Spark 具有動態保留型節流系統,可管理並行存取,並確保即使在尖峰使用時間期間也能順利運作。 如需詳細資訊,請參閱 Microsoft Fabric Spark 中的並行限制和佇列以及 Fabric 容量。
多個 Spark 集區:如果想擁有多個 Spark 集區,請使用 Fabric 環境依筆記本或 Spark 工作定義來選取集區。 如需詳細資訊,請參閱<在 Microsoft Fabric 中建立、設定及使用環境>。
注意
Spark 組態比較
Spark 組態可以在不同層級套用:
- 環境層級:這些組態會用作環境中所有 Spark 工作的預設組態。
- 內嵌層級:使用筆記本和 Spark 工作定義來設定內嵌 Spark 組態。
雖然 Azure Synapse Spark 和 Fabric 支援這兩個選項,但也有一些量:
Spark 設定 | Azure Synapse Spark | Fabric Spark |
---|---|---|
環境層級 | 支援,集區 | 支援,環境 |
內嵌 | Yes | Yes |
匯入/匯出 | Yes | 支援 (.yml 來自環境) |
API/SDK 支援 | Yes | Yes |
環境層級:在 Azure Synapse 中,可以定義多個 Spark 組態,並將其指派給不同的 Spark 集區。 可以使用環境來在 Fabric 中執行此動作。
內嵌:在 Azure Synapse 中,筆記本和 Spark 工作都支援連結不同的 Spark 組態。 在 Fabric 中,使用
spark.conf.set(<conf_name>, <conf_value>)
設定來自訂工作階段層級組態。 對於批次工作,也可以透過 SparkConf 套用組態。匯入/匯出:Spark 組態的此選項可在 Fabric 環境中使用。
其他考量:
Spark 程式庫比較
可以在不同層級套用 Spark 程式庫:
- 工作區層級:無法將這些程式庫上傳/安裝到工作區,並稍後將它們指派給 Azure Synapse 中的特定 Spark 集區。
- 環境層級:可以將程式庫上傳/安裝至環境。 環境中執行的所有筆記本和 Spark 工作定義皆可使用環境層級程式庫。
- 內嵌:除了環境層級的程式庫之外,也可以指定內嵌程式庫。 例如,在筆記本工作階段的開頭。
考量因素:
Spark 程式庫 | Azure Synapse Spark | Fabric Spark |
---|---|---|
工作區層級 | 是 | No |
環境層級 | 支援,集區 | 支援,環境 |
內嵌 | Yes | Yes |
匯入/匯出 | Yes | Yes |
API/SDK 支援 | Yes | Yes |
- 其他考量:
- 內建程式庫:Fabric 和 Azure Synapse 共用 Spark 的通用核心,但它們對執行階段程式庫的不同支援略有不同。 一般而言,使用程式代碼與某些例外相容。 在此情況下,使用者可能需要進行編譯、新增自訂程式庫,以及調整語法。 請參閱這裡,了解內建 Fabric Spark 執行階段程式庫。
注意
筆記本比較
Notebook 和 Spark 工作定義是在 Fabric 中開發 Apache Spark 工作的主要程式碼項目。 Azure Synapse Spark 筆記本和 Fabric Spark 筆記本之間有一些差異:
筆記本功能 | Azure Synapse Spark | Fabric Spark |
---|---|---|
匯入/匯出 | Yes | Yes |
工作階段組態 | 支援,UI 和內嵌 | 支援,UI (環境) 和內嵌 |
IntelliSense | 是 | Yes |
mssparkutils | Yes | Yes |
筆記本資源 | No | Yes |
共同作業 | No | Yes |
高並行 | No | Yes |
適用於 Spark C# 的 .NET | 是 | No |
管線活動支援 | Yes | Yes |
內建排程執行支援 | No | Yes |
API/SDK 支援 | Yes | Yes |
mssparkutils:因為 Fabric 尚未支援 DMTS 連線,因此目前在
mssparkutils.credentials
Fabric 中僅支援getToken
和getSecret
。筆記本資源:Fabric 筆記本提供類似 Unix 的檔案系統,可協助管理資料夾和檔案。 如需詳細資訊,請參閱<如何使用 Microsoft Fabric 筆記本>。
共同作業:Fabric 筆記本是一個共同作業項目,可支援多個使用者編輯同一個筆記本。 如需詳細資訊,請參閱<如何使用 Microsoft Fabric 筆記本>。
高並行:在 Fabric 中,可以將筆記本連結至高並行工作階段。 對於在 Azure Synapse 中使用 ThreadPoolExecutor 的使用者,此選項是一個替代方案。 如需詳細資訊,請參閱<設定 Fabric 筆記本的高並行模式>。
適用於 Spark C# 的 .NET:Fabric 不支援 .NET Spark (C#)。 不過,我們建議使用 C# 或 F# 撰寫的現有工作負載的使用者移轉至 Python 或 Scala。
內建排程執行支援:Fabric 支援筆記本的排程執行。
其他考量:
- 可以使用筆記本內部的功能,這些功能僅支援特定版本的 Spark。 請記住,Fabric 不支援 Spark 2.4 和 3.1。
- 如果筆記本或 Spark 工作將連結服務與不同的資料來源連線或掛接點搭配使用,應修改 Spark 工作,使用替代方法來處理與外部資料來源和接收器的連線。 借助 Spark 程式碼,使用可用的 Spark 程式庫連線到資料來源。
注意
Spark 工作定義比較
Spark 工作定義重要考量:
Spark 工作功能 | Azure Synapse Spark | Fabric Spark |
---|---|---|
PySpark | Yes | Yes |
Scala | Yes | Yes |
適用於 Spark C# 的 .NET | 是 | No |
SparkR | No | Yes |
匯入/匯出 | 支援 (UI) | No |
管線活動支援 | Yes | Yes |
內建排程執行支援 | No | Yes |
重試原則 | No | Yes |
API/SDK 支援 | Yes | Yes |
Spark 工作:可以自備 .py/.R/jar 檔案。 Fabric 支援 SparkR。 Spark 工作定義支援參考檔案、命令列引數、Spark 組態和 Lakehouse 參考。
匯入/匯出:在 Azure Synapse 中,可以從 UI 匯入/匯出 JSON 型 Spark 工作定義。 Fabric 中尚未提供此功能。
適用於 Spark C# 的 .NET:Fabric 不支援 .NET Spark (C#)。 不過,建議使用 C# 或 F# 撰寫的現有工作負載的使用者移轉至 Python 或 Scala。
內建排程執行支援:Fabric 支援 Spark 工作定義的排程執行。
重試原則:此選項允許用戶無限期地執行 Spark 結構化串流工作。
Hive 中繼存放區 (HMS) 比較
Hive 中繼存放區 (HMS) 差異和考量:
HMS 類型 | Azure Synapse Spark | Fabric Spark |
---|---|---|
內部 HMS | Yes | 支援 (Lakehouse) |
外部 HMS | 是 | No |
- 外部 HMS:Fabric 目前不支援目錄 API 和存取外部 Hive 中繼存放區 (HMS)。
相關內容
- 深入了解 Spark 集區、組態、程式庫、筆記本和 Spark 工作定義的移轉選項
- 移轉資料和管線
- 移轉 Hive 中繼存放區中繼資料