本文比较了 Azure Synapse Spark 和 Fabric Spark,涵盖 Spark 池、配置、库、笔记本和 Spark 作业定义(SJD)。
| 类别 | Azure Synapse Spark | 织物火花 |
|---|---|---|
| Spark 池 | Spark 池 - - |
初学者池 (预热) / 自定义池 V 顺序 高并发性 |
| Spark 配置 | 池级别 笔记本或 Spark 作业定义级别 |
环境级别 笔记本或 Spark 作业定义级别 |
| Spark 库 | 工作区级别包 池级别包 内联包 |
- 环境库 内联库 |
| 资源 | 笔记本(Python、Scala、Spark SQL、R、.NET) Spark 作业定义(Python、Scala、.NET) Synapse 管道 管道活动(笔记本、Spark 作业定义) |
笔记本(Python、Scala、Spark SQL、R) Spark 作业定义(Python、Scala、R) 数据工厂管道 管道活动(笔记本、Spark 作业定义) |
| Data | 主存储 (ADLS Gen2) 数据驻留(基于群集/区域) |
主存储 (OneLake) 数据驻留(基于容量/区域) |
| 元数据 | 内部 Hive 元存储 (HMS) 外部 HMS(使用 Azure SQL DB) |
内部 HMS(湖屋) - |
| 连接 | 连接器类型(链接服务) 数据源 数据源连接 到工作区标识 |
连接器类型(数据移动和转换服务) 数据源 - |
| 安全性 | 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 工作室用户界面 协作(工作区) Livy API API/SDK mssparkutils |
IDE 集成 (VS Code) Fabric 用户界面 协作(工作区和共享) Livy API API/SDK notebookutils |
| 日志记录和监视 | Spark 顾问 内置监视池和作业(通过 Synapse Studio) Spark 历史记录服务器 Prometheus/Grafana 日志分析 存储帐户 事件中心 |
Spark 顾问 内置监视池和作业(通过监视中心) Spark 历史记录服务器 - Log Analytics 存储帐户 事件中心 |
| 业务连续性和灾难恢复 (BCDR) | BCDR(数据)ADLS Gen2 | BCDR(数据)OneLake |
何时选择:使用 Fabric Spark 通过 OneLake 存储、内置 CI/CD 管道和基于容量的缩放进行统一分析。 需要 GPU 加速池、外部 Hive 元存储或 JDBC 连接时,请使用 Azure Synapse Spark。
Fabric 中的关键限制
- 笔记本中的 DMTS:数据移动和转换服务不能用于笔记本或 Spark 作业定义
- Key Vault 的托管标识:笔记本中不支持
- 外部 Hive 元数据存储:不支持
- GPU 加速池:不可用
- 适用于 Spark 的 .NET (C#):不支持
更多构造注意事项
Spark 池比较
下表比较了 Azure Synapse Spark 和 Fabric Spark 池。
| Spark 设置 | Azure Synapse Spark | 织物火花 |
|---|---|---|
| 实时池(预热实例) | - | 是,初学者池 |
| 自定义池 | 是 | 是 |
| Spark 版本(运行时) | 2.4、3.1、3.2、3.3、3.4 | 3.4, 3.5, 4.0 |
| 自动缩放 | 是 | 是 |
| 执行程序的动态分配 | 是,最多 200 个 | 是,基于容量 |
| 可调整节点大小 | 是,3-200 | 是,1 个,基于容量 |
| 最低节点配置 | 3 个节点 | 1 个节点 |
| 节点大小系列 | 内存优化、GPU 加速 | 内存优化 |
| 节点大小 | Small-XXXLarge | Small-XXLarge |
| 自动暂停 | 是,可自定义,至少 5 分钟 | 是,不可自定义,2 分钟 |
| 高并发性 | 否 | 是 |
| V 顺序 | 否 | 是 |
| Spark 自动优化 | 否 | 是 |
| 本机执行引擎 | 否 | 是 |
| 并发限制 | 固定 | 基于容量的变量 |
| 多个 Spark 池 | 是 | 是(环境) |
| 智能缓存 | 是 | 是 |
| API/SDK 支持 | 是 | 是 |
- 运行时:Fabric 不支持 Spark 3.3 和更低版本。 Fabric Spark 支持 在运行时 1.2 中使用 Delta 2.4 的 Spark 3.4、 运行时 1.3 内具有 Delta 3.1 的 Spark 3.5,以及 运行时 2.0 中具有 Delta 4.0 的 Spark 4.0。
何时选择:将 Fabric Spark 池用于快速启动(初学者池)、单节点作业、高并发会话和 V 顺序优化。 需要 GPU 加速或固定扩展到 200 个节点时,请使用 Azure Synapse 池。
Spark 运行时版本
Fabric Spark 支持的版本:
Fabric 不支持 Spark 2.4、3.1 或 3.2。
可调整节点大小
无论节点大小如何,Azure Synapse Spark 池都会纵向扩展到 200 个节点。 在 Fabric 中,最大节点数取决于节点大小和预配容量(SKU)。
构造容量转换:2 个 Spark vCore = 1 个容量单位。 公式:容量中的 vCore 总数 ÷ 每个节点大小的 vCore 数 = 可用的最大节点数。
例如,SKU F64 提供 64 个容量单位(128 个 Spark vCore)。 下表显示了 F64 的节点限制:
| Spark 池大小 | Azure Synapse Spark | Fabric Spark(自定义池,SKU F64) |
|---|---|---|
| 小型(4 个 vCore) | 最小值:3,最大值:200 | 最小值:1,最大值:32 |
| 中等(8 个 vCore) | 最小值:3,最大值:200 | 最小值:1,最大值:16 |
| 大型(16 个虚拟核心) | 最小值:3,最大值:200 | 最小值:1,最大值:8 |
| X-Large (32 个 vCore) | 最小值:3,最大值:200 | 最小值:1,最大值:4 |
| XX-Large(64 个 vCore) | 最小值:3,最大值:200 | 最小值:1,最大值:2 |
有关详细信息,请参阅 Spark 计算。
节点大小
Fabric Spark 池仅支持 内存优化节点系列。 Fabric 不支持 Azure Synapse 中提供的 GPU 加速池。
节点大小比较(XX-Large):
- Azure Synapse:432 GB 内存
- 结构:512 GB 内存、64 个 vCore
从小到 X-Large 的节点规模在 Azure Synapse 和 Fabric 中具有相同的 vCores 和内存。
自动暂停行为
自动暂停设置比较:
- 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 作业定义中的每会话配置
| Spark 配置 | Azure Synapse Spark | 织物火花 |
|---|---|---|
| 环境级别 | 是,池 | 是,环境 |
| 内联 | 是 | 是 |
| 导入/导出 | 是 | 是(来自环境的 .yml) |
| API/SDK 支持 | 是 | 是 |
何时选择:两个平台都支持环境和内联配置。 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 顺序。
- 优化写入:在 Fabric 中默认启用;默认情况下在 Azure Synapse 中禁用。
Spark 库比较
Spark 库适用于三个级别:
- 工作区级别:仅在 Azure Synapse 中可用
- 环境级别:可用于环境中所有笔记本和 Spark 作业定义的库
- 内联:在笔记本启动时安装的会话特定库
| Spark 库 | Azure Synapse Spark | 织物火花 |
|---|---|---|
| 工作区级别 | 是 | 否 |
| 环境级别 | 是,池 | 是,环境 |
| 内联 | 是 | 是 |
| 导入/导出 | 是 | 是 |
| API/SDK 支持 | 是 | 是 |
何时选择:两个平台都支持环境和内联库。 Fabric 不支持工作区级包。
- 内置库:Fabric 和 Azure Synapse 运行时共享通用的 Spark 核心,但在库版本中有所不同。 某些代码可能需要重新编译或自定义库。 请参阅 Fabric 运行时库。
笔记本比较
笔记本和 Spark 作业定义是用于在 Fabric 中开发 Apache Spark 作业的主要代码项。 Azure Synapse Spark 笔记本 和 Fabric Spark 笔记本之间存在一些差异:
| 笔记本功能 | Azure Synapse Spark | 织物火花 |
|---|---|---|
| 导入/导出 | 是 | 是 |
| 会话配置 | 是的。 UI 和内联 | 是的。 UI (环境) 和内联 |
| IntelliSense | 是 | 是 |
| mssparkutils | 是 | 是 |
| 笔记本资源 | 否 | 是 |
| 协作 | 否 | 是 |
| 高并发性 | 否 | 是 |
| 适用于 Spark C 的 .NET# | 是 | 否 |
| 管道活动支持 | 是 | 是 |
| 内置计划运行支持 | 否 | 是 |
| API/SDK 支持 | 是 | 是 |
何时选择:使用 Fabric 笔记本进行协作、高并发会话、内置计划和笔记本资源。 如果需要 .NET for Spark(C#),请使用 Azure Synapse 笔记本。
-
notebookutils.credentials:仅支持 Fabric 中的
getToken和getSecret(DMTS 连接不可用)。 - 笔记本资源:Fabric 提供类似于 Unix 的文件系统来管理文件。 请参阅 如何使用笔记本。
- 高并发性:替代 Azure Synapse 中的 ThreadPoolExecutor。 请参阅 配置高并发模式。
- 适用于 Spark 的 .NET:将 C#/F# 工作负载迁移到 Python 或 Scala。
- 链接服务:替换为用于外部数据源连接的 Spark 库。
注意
Spark 作业定义比较
有关 Spark 作业定义的重要注意事项:
| Spark 作业功能 | Azure Synapse Spark | 织物火花 |
|---|---|---|
| PySpark | 是 | 是 |
| Scala | 是 | 是 |
| 适用于 Spark C 的 .NET# | 是 | 否 |
| SparkR | 否 | 是 |
| 导入/导出 | 是 (UI) | 否 |
| 管道活动支持 | 是 | 是 |
| 内置计划运行支持 | 否 | 是 |
| 重试策略 | 否 | 是 |
| API/SDK 支持 | 是 | 是 |
何时选择:对 SparkR 支持、内置计划和重试策略使用 Fabric Spark 作业定义。 如果需要使用 .NET for Spark(C#)或基于 UI 的导入/导出功能,建议使用 Azure Synapse。
- 支持的文件:.py、.R 和 .jar 文件,与引用文件、命令行参数和 lakehouse 引用一起使用。
- 导入/导出:基于 UI 的 JSON 导入/导出仅在 Azure Synapse 中可用。
- 重试策略:为 Spark 结构化流作业启用无限期运行。
- 适用于 Spark 的 .NET:将 C#/F# 工作负载迁移到 Python 或 Scala。
Hive 元存储 (HMS) 比较
| HMS 类型 | Azure Synapse Spark | 织物火花 |
|---|---|---|
| 内部 HMS | 是 | 是(湖屋) |
| 外部 HMS | 是 | 否 |
何时选择:如果基于 Lakehouse 的内部 HMS 满足需求,请使用 Fabric。 如果需要外部 Hive 元存储(Azure SQL DB)或目录 API 访问权限,请使用 Azure Synapse。
相关内容
- 详细了解 Spark 池、配置、库、笔记本和 Spark 作业定义的迁移选项
- 迁移数据和管道
- 迁移 Hive 元存储元数据