Paimon与Spark

简介: Paimon与Spark

Paimon与Spark的深度集成:查询性能优化实践

,数据湖存储技术的发展日新月异。Apache Paimon,作为流式数据湖存储技术的新星,正以其高吞吐、低延迟的特性,为用户提供了强大的数据摄入、流式订阅以及实时查询能力。本文将分享我们在Paimon与Spark集成过程中的关键优化实践,通过一系列创新举措,我们将Paimon x Spark的性能提升了37%以上,使其与Parquet x Spark持平。接下来,让我们一起探索这些优化点的奥秘。

动态分区裁剪(Dynamic Partition Prunning, DPP)

动态分区裁剪是SQL优化中的一个常见技术,它通过谓词下推(Predicate PushDown)的方式,最小化从数据源中读取数据的IO成本,从而降低计算成本。在数仓场景中,我们经常需要将大的事实表与小的维度表进行关联查询,DPP在这里发挥了重要作用。通过Paimon的Spark DataSource V2查询框架,我们实现了动态分区裁剪的能力,显著减少了参与Join操作的数据量,大幅提升了查询性能。

Exchange复用

在Spark中,Exchange是物理计划中的关键操作,对应逻辑计划中的Shuffle。在复杂的SQL中,通过公共表表达式(CTE)定义的SQL片段可能会被多次使用。Exchange复用优化允许这些数据只被执行一次,然后缓存起来供后续操作使用,减少了冗余计算和IO网络开销。我们解决了Paimon中的实现问题,使得Paimon能够使用Spark提供的Exchange复用优化。

动态调整Scan并发

任务执行时的并发度是影响作业性能的关键因素之一。在DataSource V2框架下,Paimon提供了基于当前作业可用core数动态调整数据源的数据分片的能力,从而提升了查询效率。这一优化使得Paimon在执行复杂查询时表现出色。

合并标量子查询

合并标量子查询优化通过遍历整个SQL逻辑执行计划,提取出标量子查询,并尝试将多个标量子查询合并起来,减少了冗余的计算。我们在Paimon侧单独实现了这一优化,并通过Spark的Extensions接口将优化注入到了Spark优化器中。

Cost-Based优化

基于成本的优化(CBO)是Spark SQL中用于提升查询性能的重要工具,尤其在多路Join场景中效果显著。Paimon在元数据中增加了statistics信息,并通过Spark Analyze命令完成收集,使得Spark SQL可以利用Paimon的表级/列级信息进行查询优化。

优化效果

通过上述优化,Paimon x Spark的性能得到了显著提升。在没有column级统计信息的情况下,优化后的Paimon与Parquet已经基本持平。当开启column级统计信息后,Paimon的性能虽然略逊于Parquet,但差距已经在缩小,这也是我们未来优化工作的重点方向之一。

后续规划

在湖仓体系下,读写查询优化是一项长期而艰巨的任务。我们将继续推进Paimon充分利用Spark SQL现有的优化规则和框架,并利用Paimon自身的特性,如Index或Clustering等,进一步提升性能。同时,我们也在规划对append表支持Upsert能力,以满足更多无主键表的使用场景。

目录
相关文章
|
4月前
|
分布式计算 Serverless 调度
EMR Serverless Spark:结合实时计算 Flink 基于 Paimon 实现流批一体
本文演示了使用实时计算 Flink 版和 Serverless Spark 产品快速构建 Paimon 数据湖分析的流程,包括数据入湖 OSS、交互式查询,以及离线Compact。Serverless Spark完全兼容Paimon,通过内置的DLF的元数据实现了和其余云产品如实时计算Flink版的元数据互通,形成了完整的流批一体的解决方案。同时支持灵活的作业运行方式和参数配置,能够满足实时分析、生产调度等多项需求。
60777 107
|
5月前
|
SQL 分布式计算 大数据
Paimon 与 Spark 的集成(二):查询优化
通过一系列优化,我们将 Paimon x Spark 在 TpcDS 上的性能提高了37+%,已基本和 Parquet x Spark 持平,本文对其中的关键优化点进行了详细介绍。
118173 30
|
5月前
|
SQL 分布式计算 Apache
流数据湖平台Apache Paimon(六)集成Spark之DML插入数据
流数据湖平台Apache Paimon(六)集成Spark之DML插入数据
205 0
|
5月前
|
SQL 分布式计算 Apache
流数据湖平台Apache Paimon(五)集成 Spark 引擎
流数据湖平台Apache Paimon(五)集成 Spark 引擎
183 0
|
11月前
|
SQL 分布式计算 大数据
Paimon与Spark的集成(一)
Spark 已经成为了大数据领域软件栈中必不可少的组成部分。作为数据湖领域新起的 Paimon,与Spark的深度、全面的集成也将为 Paimon 在准实时场景、离线湖仓场景提供了便利。本文主要介绍一些在 Paimon 新版本中基于 Spark 计算引擎支持的主要功能。
595 1
|
13天前
|
存储 分布式计算 算法
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
35 0
|
13天前
|
消息中间件 分布式计算 NoSQL
大数据-104 Spark Streaming Kafka Offset Scala实现Redis管理Offset并更新
大数据-104 Spark Streaming Kafka Offset Scala实现Redis管理Offset并更新
29 0
|
13天前
|
消息中间件 存储 分布式计算
大数据-103 Spark Streaming Kafka Offset管理详解 Scala自定义Offset
大数据-103 Spark Streaming Kafka Offset管理详解 Scala自定义Offset
40 0
|
2天前
|
分布式计算 大数据 Apache
利用.NET进行大数据处理:Apache Spark与.NET for Apache Spark
【10月更文挑战第15天】随着大数据成为企业决策和技术创新的关键驱动力,Apache Spark作为高效的大数据处理引擎,广受青睐。然而,.NET开发者面临使用Spark的门槛。本文介绍.NET for Apache Spark,展示如何通过C#和F#等.NET语言,结合Spark的强大功能进行大数据处理,简化开发流程并提升效率。示例代码演示了读取CSV文件及统计分析的基本操作,突显了.NET for Apache Spark的易用性和强大功能。
5 1
|
11天前
|
消息中间件 分布式计算 Kafka
大数据平台的毕业设计02:Spark与实时计算
大数据平台的毕业设计02:Spark与实时计算