从基础的ETL与分析任务,到生成式AI等前沿领域,Apache Spark始终是全球数据处理的核心引擎。然而,随着数据规模持续膨胀,性能与基础设施成本之间的平衡往往成为发展瓶颈。尤其在Agent时代,自主智能体可能触发成千上万个并发、多跳查询,这一性能瓶颈会直接冲击你的单位经济效益。
今天,我们很高兴地宣布:Lightning Engine 已在 Managed Service for Apache Spark 上正式全面可用(GA),同时支持Serverless与托管集群两种部署模式。它专为应对这些规模化挑战而生,与现有Spark工作负载完全兼容,且无需对数据管道做任何修改。
无论你选择零运维的Serverless模式,还是能精细控制基础设施的托管集群模式,Lightning Engine都能作为统一的性能加速引擎,显著提升任务执行速度。经过超过一百万个真实工作负载的验证,我们在工业级稳定性与性能提升方面对其进行了精细调优。
在此次GA发布中,Lightning Engine带来的核心能力包括:
性能提升高达4.9倍,相比标准开源Spark
性价比是主流高速Spark方案的2倍
接下来,我们来深入剖析Managed Service for Apache Spark如何实现这些突破。

底层原理:向量化原生执行引擎
传统Spark执行引擎常常受困于JVM的执行开销与垃圾回收(GC)停顿。Lightning Engine直接绕过这些限制,将Spark的物理查询计划编译成针对SIMD(单指令多数据流)向量化优化的原生C++指令。
这一原生执行层构建于开源的Gluten和Velox运行时之上,并集成了谷歌专门优化的增强特性。它能在以下方面加速你最具挑战性的数据处理任务:
向量化排序:在原生内存中以列式方式处理数据,大幅减少CPU周期开销,从而加速排序操作。
加速窗口函数:诸如移动平均、聚合、去重等跨行集的计算,能直接在原生C++层中执行,速度显著提升。
智能回退机制:当查询包含原生引擎不支持的操作符或自定义Java UDF时,引擎的智能下推层会自动、平滑地将该特定子查询树回退到JVM。这样可避免不必要的数据格式转换,并保持整体执行稳定性。
优化的云存储与BigQuery连接器
如果引擎被数据“饿死”,再高性能的计算也无济于事。通过Lightning Engine,我们优化了存储连接器,确保从Cloud Storage和BigQuery读取数据不再成为瓶颈。优化措施包括:
直接路径连接:绕过多个节点跳转,与Cloud Storage建立双向流式连接。这使得seeks操作和向量化的
readVAPI无需重新打开流就能执行,从而加速对复杂、深度嵌套的Parquet或ORC文件的扫描。减少元数据调用:管理大规模分区表时,隐藏的性能消耗往往来自文件列表操作。Lightning Engine在Driver端利用字典序列表收集元数据,并直接传输给Executor,从而消除冗余的Cloud Storage API调用,显著降低元数据成本。
原生BigQuery连接器:直接以Arrow格式消费BigQuery数据。由于避免了从Arrow格式到JVM
UnsafeRow的昂贵转换,引擎消除了序列化开销,从而加速了扫描过程。
广播连接与高级查询优化
Lightning Engine引入了一个基于成本的先进查询优化器,其灵感来自谷歌F1和Spanner查询引擎,并带有多项自定义优化规则。举例来说:
单一哈希表缓存:在标准广播连接中,Spark会在不同任务间反复构建连接哈希表。Lightning Engine则为每个Executor只构建一次哈希表并缓存起来,从而消除冗余的CPU周期,并降低Executor的内存占用。
聚合下推:自动将部分聚合操作下推到shuffle操作之前。这能最大限度地减少需要通过网络传输的数据量,显著减少昂贵的shuffle阶段。
自动shuffle分区:基于运行时统计信息,为每个查询阶段动态、自适应地确定最佳shuffle分区数。这能防止因过度分区导致的OOM溢出,同时也不会造成分区不足。
从Google Cloud Next ‘26了解更多技术细节,并聆听Lowe使用Lightning Engine的实践经验。
如何开始使用
所有这些更新现已上线,随时可用!你可以直接在Google Cloud控制台或通过gcloud CLI启用Lightning Engine。
要提交一个启用了Lightning Engine的Serverless批处理任务,请在Spark属性中指定高级(premium)层级:
gcloud dataproc batches submit pyspark my_script.py
--region=us-central1
--properties=dataproc:dataproc.tier=premium
--properties=spark:spark.dataproc.lightningEngine.runtime=native
要创建一个启用了Lightning Engine和原生查询执行(NQE)的托管集群,请在终端中运行以下命令:
gcloud dataproc clusters create my-optimized-cluster
--region=us-central1
--image-version=2.3
--engine=lightning
--enable-component-gateway
--properties=spark:spark.dataproc.lightningEngine.runtime=native
或者,转到Google Cloud控制台中的Managed Service for Apache Spark页面,点击创建集群,选择Compute Engine上的集群,然后在集群配置设置中选择Lightning Engine,即可自动为你的工作负载启用查询加速。
