比较 Fabric 数据工程和 Azure Synapse Spark

本文比较了 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#):不支持

更多构造注意事项

  • 负载级别 RBAC:Fabric 支持四个工作区角色。 有关详细信息,请参阅 工作区中的角色
  • CI/CD:使用 Fabric API/SDK 和 部署管道

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 SynapseFabric 中具有相同的 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 中的 getTokengetSecret(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。