比較網狀架構 資料工程師 和 Azure Synapse Spark
網狀架構 資料工程師 與 Azure Synapse Spark 之間的這項比較提供主要功能摘要,以及各種類別的深入分析,包括 Spark 集區、組態、連結庫、筆記本和 Spark 作業定義。
下表比較不同類別的 Azure Synapse Spark 和 Fabric Spark:
類別 | Azure Synapse Spark | 網狀架構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 (湖屋) - |
連線 | 連接器型態 (連結服務) 資料來源 數據源 conn。 使用工作區身分識別 |
連接器類型 (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) 網狀架構UI 共同作業 (工作區和共用) - API/SDK mssparkutils |
記錄和監視 | Spark Advisor 內建監視集區和作業(透過 Synapse Studio) Spark 歷程記錄伺服器 Prometheus/Grafana Log Analytics 記憶體帳戶 事件中樞 |
Spark Advisor 內建監視集區和作業(透過 監視中樞) Spark 歷程記錄伺服器 - - - - |
業務持續性和災害復原 (BCDR) | BCDR (資料) ADLS Gen2 | BCDR (資料) OneLake |
考量與限制:
DMTS 整合:您無法透過筆記本和Spark作業定義使用 DMTS。
工作負載層級 RBAC:Fabric 支援四個不同的工作區角色。 如需詳細資訊,請參閱 Microsoft Fabric 工作區中的角色。
受控識別:目前,Fabric 不支援在筆記本中使用 Azure KeyVault 的工作區身分識別或受控識別來執行筆記本和 Spark 作業定義。
CI/CD:您可以使用網狀架構 API/SDK 和 部署管線。
Livy API 以及如何提交和管理 Spark 作業:Livy API 位於藍圖中,但尚未在 Fabric 中公開。 您必須使用網狀架構 UI 建立筆記本和 Spark 作業定義。
Spark 記錄和計量:在 Azure Synapse 中,您可以將 Spark 記錄和計量發出至您自己的記憶體,例如 Log Analytics、Blob 和事件中樞。 您也可以從 API 取得工作區的 Spark 應用程式清單。 目前,這兩項功能都無法在 Fabric 中使用。
其他考慮:
- JDBC:目前無法在 Fabric 中使用 JDBC 連線支援。
Spark 集區比較
下表比較 Azure Synapse Spark 和 Fabric Spark 集區。
Spark 設定 | Azure Synapse Spark | 網狀架構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 內具有 Delta 2.4 的 Spark 3.4 和運行時間 1.3 內具有 Delta 3.0 的 Spark 3.5。
自動調整:在 Azure Synapse Spark 中,不論節點大小為何,集區都可以相應增加至 200 個節點。 在 Fabric 中,節點數目上限受限於節點大小和布建容量。 請參閱下列 F64 SKU 範例。
Spark 集區大小 Azure Synapse Spark 網狀架構 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 集區中擁有的節點數目取決於您的節點大小和網狀架構容量。 容量是一項量值,可測量您可以在 Azure 中使用的運算能力。 其中一種方法是,兩個Spark虛擬核心(Spark的運算能力單位)等於一個容量單位。 例如,網狀架構容量 SKU F64 有 64 個容量單位,相當於 128 個 Spark 虛擬核心。 因此,如果您選擇小型節點大小,您的集區中最多可以有32個節點(128/4 = 32)。 然後,每個節點大小容量/虛擬核心中的虛擬核心總數 = 可用的節點總數。 如需詳細資訊,請參閱 Spark計算。
節點大小系列:網狀架構 Spark 集區目前僅支援 記憶體優化節點大小系列 。 如果您在 Azure Synapse 中使用 GPU 加速 SKU Spark 集區,則無法在 Fabric 中使用。
節點大小:xx 大型節點大小隨附 Azure Synapse 中 432 GB 的記憶體,而相同節點大小在網狀架構中有 512 GB,包括 64 個虛擬核心。 其餘節點大小(小型到 x-large)在 Azure Synapse 和 Fabric 中都有相同的虛擬核心和記憶體。
自動暫停:如果您在 Azure Synapse Spark 中啟用它,Apache Spark 集區會在指定的空閒時間之後自動暫停。 此設定可在 Azure Synapse 中設定(至少 5 分鐘),但自定義集區在會話到期後,Fabric 的預設 自動暫停持續時間為 2 分鐘 。 默認會話到期日在 Fabric 中設定為 20 分鐘。
高併行:Fabric 支援筆記本中的高並行存取。 如需詳細資訊,請參閱 Fabric Spark 中的高併行模式。
並行限制:就並行而言,Azure Synapse Spark 每個 Spark 集區有 50 個同時執行的作業,而每個 Spark 集區 200 個佇列作業的限制。 作用中作業上限是每個Spark集區250個,每個工作區1000個。 在 Microsoft Fabric Spark 中,容量 SKU 會定義並行限制。 SKU 對範圍從 1 到 512 的最大並行作業有不同的限制。 此外,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 | 網狀架構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 組態的此選項可在網狀架構環境中使用。
其他考慮:
- 不可變的Spark組態:某些Spark組態是不可變的。 如果您收到訊息
AnalysisException: Can't modify the value of a Spark config: <config_name>
,有問題的 屬性是不可變的。 - FAIR 排程器:FAIR 排程器用於 高併行模式。
- V 順序: V 順序 會套用至網狀架構 Spark 集區中預設啟用的 parquet 檔案的寫入時間優化。
- 優化寫入:Azure Synapse 中預設會停用優化寫入,但預設會針對 Fabric Spark 啟用。
- 不可變的Spark組態:某些Spark組態是不可變的。 如果您收到訊息
注意
Spark 連結庫比較
您可以在不同層級套用 Spark 連結庫:
- 工作區層級:您無法將這些連結庫上傳/安裝到您的工作區,稍後再將它們指派給 Azure Synapse 中的特定 Spark 集區。
- 環境層級:您可以將連結庫上傳/安裝至環境。 環境層級連結庫可供環境中執行的所有筆記本和 Spark 作業定義使用。
- 內嵌:除了環境層級的連結庫之外,您也可以指定內嵌連結庫。 例如,在筆記本會話的開頭。
考量因素:
Spark 連結庫 | Azure Synapse Spark | 網狀架構Spark |
---|---|---|
工作區層級 | 是 | No |
環境層級 | 是,集區 | 是,環境 |
內嵌 | Yes | Yes |
匯入/匯出 | Yes | Yes |
API/SDK 支援 | Yes | Yes |
- 其他考慮:
- 內建連結庫:網狀架構和 Azure Synapse 共用 Spark 的通用核心,但它們在運行時間連結庫的不同支援方面可能稍有不同。 一般而言,使用程式代碼與某些例外狀況相容。 在此情況下,使用者可能需要編譯、新增自定義連結庫,以及調整語法。 請參閱這裡的內建 Fabric Spark 運行時間連結庫。
注意
筆記本比較
Notebook 和 Spark 作業定義是用於在 Fabric 中開發 Apache Spark 作業的主要程式碼專案。 Azure Synapse Spark Notebook 和 Fabric Spark Notebook 之間有一些差異:
筆記本功能 | Azure Synapse Spark | 網狀架構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 連線,因此目前在
getToken
Fabric 中mssparkutils.credentials
僅支援 和getSecret
。筆記本資源:網狀架構筆記本提供類似 Unix 的文件系統,以協助您管理資料夾和檔案。 如需詳細資訊,請參閱 如何使用 Microsoft Fabric 筆記本。
共同作業:Fabric 筆記本是一個共同作業專案,可支援多個用戶編輯相同的筆記本。 如需詳細資訊,請參閱 如何使用 Microsoft Fabric 筆記本。
高併行:在 Fabric 中,您可以將筆記本附加至高並行會話。 此選項是使用者在 Azure Synapse 中使用 ThreadPoolExecutor 的替代方案。 如需詳細資訊,請參閱 設定網狀架構筆記本的高並行模式。
適用於 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 | 網狀架構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 檔案。 網狀架構支援SparkR。 Spark 作業定義支持參考檔案、命令行自變數、Spark 組態和 Lakehouse 參考。
匯入/匯出:在 Azure Synapse 中,您可以從 UI 匯入/匯出 JSON 型 Spark 作業定義。 這項功能尚未在 Fabric 中提供。
適用於 Spark C# 的 .NET:Fabric 不支援 .NET Spark (C#)。 不過,建議使用 C# 或 F# 撰寫的現有工作負載的使用者 會遷移至 Python 或 Scala。
管線活動支援:Fabric 中的數據管線尚未包含Spark作業定義活動。 如果您想要定期執行 Spark 作業,可以使用排程的執行。
內建排程執行支援:Fabric 支援 Spark 作業定義的排程執行。
重試原則:此選項可讓用戶無限期地執行Spark結構化串流作業。
注意
Hive 中繼存放區 (HMS) 比較
Hive MetaStore (HMS) 差異和考慮:
HMS 類型 | Azure Synapse Spark | 網狀架構Spark |
---|---|---|
內部 HMS | Yes | 是(湖屋) |
外部 HMS | 是 | No |
- 外部 HMS:網狀架構目前不支援目錄 API 和外部 Hive 中繼存放區 (HMS) 的存取權。
注意
相關內容
- 深入瞭解 Spark 集區、組態、連結庫、筆記本和 Spark 作業定義的移轉選項
- 移轉數據和管線
- 移轉 Hive 中繼存放區元數據