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能力,以满足更多无主键表的使用场景。

相关文章
Apache Spark & Paimon Meetup · 北京站,助力 LakeHouse 架构生产落地
2024年11月15日13:30北京市朝阳区阿里中心-望京A座-05F,阿里云 EMR 技术团队联合 Apache Paimon 社区举办 Apache Spark & Paimon meetup,助力企业 LakeHouse 架构生产落地”线下 meetup,欢迎报名参加!
146 3
EMR Serverless Spark:结合实时计算 Flink 基于 Paimon 实现流批一体
本文演示了使用实时计算 Flink 版和 Serverless Spark 产品快速构建 Paimon 数据湖分析的流程,包括数据入湖 OSS、交互式查询,以及离线Compact。Serverless Spark完全兼容Paimon,通过内置的DLF的元数据实现了和其余云产品如实时计算Flink版的元数据互通,形成了完整的流批一体的解决方案。同时支持灵活的作业运行方式和参数配置,能够满足实时分析、生产调度等多项需求。
60874 107
Paimon 与 Spark 的集成(二):查询优化
通过一系列优化,我们将 Paimon x Spark 在 TpcDS 上的性能提高了37+%,已基本和 Parquet x Spark 持平,本文对其中的关键优化点进行了详细介绍。
118483 30
Paimon与Spark的集成(一)
Spark 已经成为了大数据领域软件栈中必不可少的组成部分。作为数据湖领域新起的 Paimon,与Spark的深度、全面的集成也将为 Paimon 在准实时场景、离线湖仓场景提供了便利。本文主要介绍一些在 Paimon 新版本中基于 Spark 计算引擎支持的主要功能。
855 1
流数据湖平台Apache Paimon(六)集成Spark之DML插入数据
流数据湖平台Apache Paimon(六)集成Spark之DML插入数据
251 0
流数据湖平台Apache Paimon(五)集成 Spark 引擎
流数据湖平台Apache Paimon(五)集成 Spark 引擎
258 0
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
268 2
ClickHouse与大数据生态集成:Spark & Flink 实战
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
102 0
大数据-104 Spark Streaming Kafka Offset Scala实现Redis管理Offset并更新
大数据-104 Spark Streaming Kafka Offset Scala实现Redis管理Offset并更新
80 0
大数据-103 Spark Streaming Kafka Offset管理详解 Scala自定义Offset
大数据-103 Spark Streaming Kafka Offset管理详解 Scala自定义Offset
129 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等