You need to enable JavaScript to run this app.
文档中心
E-MapReduce

E-MapReduce

复制全文
下载 pdf
Serverless Spark 作业:基于 Spark connect
EMR Serverless Spark Connect 简介
复制全文
下载 pdf
EMR Serverless Spark Connect 简介

什么是Spark Connect

Spark Connect 是 Apache Spark 从 3.4 版本开始引入的远程连接能力,核心思路是将客户端与 Spark 服务端分离。客户端通过 gRPC 协议向远端 Spark 服务发送查询请求,服务端接收请求后完成查询优化、任务调度和分布式计算,再将结果返回客户端。
Image
在这种架构下,客户端只负责构建逻辑查询计划(Unresolved Logical Plan)和接收执行结果,不需要在本地启动完整的 Spark Driver,也不需要与 Spark 集群直接交互。用户可以在 Notebook、IDE 或应用程序中像调用本地库一样使用 Spark 的 DataFrame 和 SQL 能力,而实际计算在远端完成,更多Spark Connect 的介绍请参见:Spark Connect 社区文档

为什么 EMR Serverless 提供Spark Connect 作业方式

EMR ServerlessSpark Connect 是火山引擎基于 ApacheSpark Connect 构建的托管式远程 Spark 连接服务。用户通过 EMR 提供的 Python Client 或 Java Client 连接远端 EMR ServerlessSpark Connect App,即可使用 Serverless Spark 的弹性计算能力,无需关心底层集群的创建、扩缩容和运维。
整体流程可以概括为:用户在本地编写 Spark DataFrame / SQL 代码 → 客户端将查询计划发送到 EMR ServerlessSpark Connect App → 服务端执行实际计算并返回结果
这种方式让本地开发环境和远端生产计算环境打通,开发阶段就可以使用真实数据和完整的 Spark 运行时进行调试和验证。

适用场景
  • 在 Jupyter Notebook、VS Code、PyCharm 等本地或在线开发环境中进行交互式 Spark 开发与探索式分析。
  • 在 Python、Java 等应用程序中远程创建 SparkSession,执行 Spark SQL 或 DataFrame 作业。
  • 本地开发阶段连接远端 Spark 环境处理真实数据,减少本地开发与生产环境之间的差异和调试成本。
  • 利用 EMR Serverless 的弹性资源、权限控制、作业观测和日志能力,降低集群运维负担。

产品优势
  • 客户端与服务端解耦:客户端应用无需与 Spark Driver 运行在同一进程中,可以在 Notebook、IDE、服务端应用等不同环境中灵活接入。
  • 开发体验友好:支持交互式执行 SQL / DataFrame 代码,适合数据探索、逻辑调试和快速验证。
  • 无需管理集群:底层计算资源由 EMR Serverless 托管,用户不需要手动创建、扩缩容和维护 Spark 集群。
  • 资源弹性与成本可控:计算任务在远端 Serverless Spark 环境中按需执行,根据实际负载分配资源,避免本地资源瓶颈。
  • 生产一致性:开发阶段即可连接远端 Spark 运行环境处理真实数据,有助于减少从开发到生产发布之间的环境差异。

客户端能力说明

当前客户端能力分为两部分:

  • Java Client:适合服务端程序、任务平台、Java/Scala 生态接入
  • Python Client:适合 Notebook、交互式分析、Python 服务接入

核心能力对比:

能力

Java Client

Python Client

说明

创建新的Spark Connect App

两端均可

查询已有Spark Connect App

两端均可

停止已有Spark Connect App

两端均可

查询 App 状态与 Tracking URL

两端均可

创建 SparkSession 并连接Spark Connect App

两端均可

支持环境变量配置认证信息

两端均可

支持从SPARK_CONF_DIR/spark-defaults.conf 自动加载 Spark 配置

两端均可

支持手动指定 Spark 配置文件,并覆盖默认目录读取逻辑

两端均可

支持常见 Spark 参数配置

两端均可

Notebook 进度展示

Python 增强,更适合 Notebook 场景下的过程反馈。

与 Jupyter / IPython 更友好的使用方式

Python 增强,更适合交互式分析与 Python 生态集成。

版本匹配说明

请根据目标Spark Connect App 的 Spark 版本,选择对应的客户端环境。

目标Spark Connect App 版本

Java Client

Python 环境

说明

Spark 3.5.1

使用 Spark 3.5.1 对应的 Java Client JAR

pyspark3.5.1,py4j0.10.9.7

Python Client wheel 通用,但 pyspark 版本需要匹配

Spark 4.1.2

使用 Spark 4.1.1 对应的 Java Client JAR

pyspark4.1.1,py4j0.10.9.9

Python Client wheel 通用,但 pyspark 版本需要匹配

说明

Python Client 的 wheel 只有一份,但运行环境中的 pyspark 版本需要与目标Spark Connect App 对应的 Spark 大版本一致。

使用限制和建议

限制条件

Spark Connect 采用客户端与服务端分离架构,因此部分传统 Spark 本地模式或 Driver 内部能力不可直接使用。当前主要限制如下:

  • 暂不支持 SparkContext 相关能力,如 parallelize、textFile、broadcast、accumulator 等,建议优先使用 DataFrame / SQL 能力替代。
  • 暂不支持 RDD 编程模型,包括 RDD API 及 DataFrame.rdd,建议将相关处理逻辑改写为 DataFrame API、SQL 或 UDF。
  • 暂不支持直接访问 _jvm、_jsc 等底层 JVM 接口,建议通过 Spark 配置、内置函数或服务端预置能力实现。
  • Spark 3.5.1 暂不支持 MLlib。

使用建议

  1. 创建或连接Spark Connect App 前,请先确认目标 App 的 Spark 版本。
  2. Python Client 的 pyspark / py4j 版本需要与目标Spark Connect App 的 Spark 版本匹配,Java Client 需要选择与目标 Spark 版本对应的 JAR。
  3. 推荐使用 serverId + getOrCreate() 连接已有的Spark Connect App,避免重复创建。
  4. 使用完成后,建议调用 spark.stop() 释放当前 SparkSession。
  5. 对于 Python 环境、第三方包或大文件依赖,建议优先在创建Spark Connect App 时配置;临时依赖可通过 addArtifact 动态上传。详细操作请参见添加 Spark Connect App 依赖

使用流程

EMR ServerlessSpark Connect 使用主要分为以下几个步骤:

  1. 安装与配置 Spark Connect Client
  2. 创建 Spark Connect App,若需要添加依赖,请参见添加 Spark Connect App 依赖
  3. 连接 Spark Connect App 并提交作业,若需要结合第三方库执行可视化分析作业,请参见作业可视化分析

相关操作

查看作业进度和作业运行信息,可以使用插件提升作业管理体验,详细操作请参见作业管理:Notebook 进度条与 UI 插件

最近更新时间:2026.08.14 15:44:21
这个页面对您有帮助吗?
有用
有用
无用
无用