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
Apache Spark & Paimon Meetup · 北京站,助力 LakeHouse 架构生产落地
2024年11月15日13:30北京市朝阳区阿里中心-望京A座-05F,阿里云 EMR 技术团队联合 Apache Paimon 社区举办 Apache Spark & Paimon meetup,助力企业 LakeHouse 架构生产落地”线下 meetup,欢迎报名参加!
634 59
|
分布式计算 Serverless 调度
EMR Serverless Spark:结合实时计算 Flink 基于 Paimon 实现流批一体
本文演示了使用实时计算 Flink 版和 Serverless Spark 产品快速构建 Paimon 数据湖分析的流程,包括数据入湖 OSS、交互式查询,以及离线Compact。Serverless Spark完全兼容Paimon,通过内置的DLF的元数据实现了和其余云产品如实时计算Flink版的元数据互通,形成了完整的流批一体的解决方案。同时支持灵活的作业运行方式和参数配置,能够满足实时分析、生产调度等多项需求。
61542 107
|
SQL 分布式计算 大数据
Paimon 与 Spark 的集成(二):查询优化
通过一系列优化,我们将 Paimon x Spark 在 TpcDS 上的性能提高了37+%,已基本和 Parquet x Spark 持平,本文对其中的关键优化点进行了详细介绍。
120048 30
|
SQL 分布式计算 大数据
Paimon与Spark的集成(一)
Spark 已经成为了大数据领域软件栈中必不可少的组成部分。作为数据湖领域新起的 Paimon,与Spark的深度、全面的集成也将为 Paimon 在准实时场景、离线湖仓场景提供了便利。本文主要介绍一些在 Paimon 新版本中基于 Spark 计算引擎支持的主要功能。
1911 1
|
SQL 分布式计算 Apache
流数据湖平台Apache Paimon(六)集成Spark之DML插入数据
流数据湖平台Apache Paimon(六)集成Spark之DML插入数据
758 0
|
SQL 分布式计算 Apache
流数据湖平台Apache Paimon(五)集成 Spark 引擎
流数据湖平台Apache Paimon(五)集成 Spark 引擎
929 0
|
人工智能 分布式计算 大数据
大数据≠大样本:基于Spark的特征降维实战(提升10倍训练效率)
本文探讨了大数据场景下降维的核心问题与解决方案,重点分析了“维度灾难”对模型性能的影响及特征冗余的陷阱。通过数学证明与实际案例,揭示高维空间中样本稀疏性问题,并提出基于Spark的分布式降维技术选型与优化策略。文章详细展示了PCA在亿级用户画像中的应用,包括数据准备、核心实现与效果评估,同时深入探讨了协方差矩阵计算与特征值分解的并行优化方法。此外,还介绍了动态维度调整、非线性特征处理及降维与其他AI技术的协同效应,为生产环境提供了最佳实践指南。最终总结出降维的本质与工程实践原则,展望未来发展方向。
752 0
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
1310 2
ClickHouse与大数据生态集成:Spark & Flink 实战
|
存储 分布式计算 Hadoop
从“笨重大象”到“敏捷火花”:Hadoop与Spark的大数据技术进化之路
从“笨重大象”到“敏捷火花”:Hadoop与Spark的大数据技术进化之路
843 79
|
存储 分布式计算 算法
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
512 0