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

目录
相关文章
|
6天前
|
SQL 分布式计算 大数据
Paimon 与 Spark 的集成(二):查询优化
通过一系列优化,我们将 Paimon x Spark 在 TpcDS 上的性能提高了37+%,已基本和 Parquet x Spark 持平,本文对其中的关键优化点进行了详细介绍。
117585 30
|
6天前
|
SQL 分布式计算 Apache
流数据湖平台Apache Paimon(六)集成Spark之DML插入数据
流数据湖平台Apache Paimon(六)集成Spark之DML插入数据
104 0
|
6天前
|
SQL 分布式计算 Apache
流数据湖平台Apache Paimon(五)集成 Spark 引擎
流数据湖平台Apache Paimon(五)集成 Spark 引擎
97 0
|
6月前
|
SQL 分布式计算 大数据
Paimon与Spark的集成(一)
Spark 已经成为了大数据领域软件栈中必不可少的组成部分。作为数据湖领域新起的 Paimon,与Spark的深度、全面的集成也将为 Paimon 在准实时场景、离线湖仓场景提供了便利。本文主要介绍一些在 Paimon 新版本中基于 Spark 计算引擎支持的主要功能。
264 0
|
6天前
|
机器学习/深度学习 SQL 分布式计算
Apache Spark 的基本概念和在大数据分析中的应用
介绍 Apache Spark 的基本概念和在大数据分析中的应用
168 0
|
6天前
|
分布式计算 Hadoop 大数据
大数据技术与Python:结合Spark和Hadoop进行分布式计算
【4月更文挑战第12天】本文介绍了大数据技术及其4V特性,阐述了Hadoop和Spark在大数据处理中的作用。Hadoop提供分布式文件系统和MapReduce,Spark则为内存计算提供快速处理能力。通过Python结合Spark和Hadoop,可在分布式环境中进行数据处理和分析。文章详细讲解了如何配置Python环境、安装Spark和Hadoop,以及使用Python编写和提交代码到集群进行计算。掌握这些技能有助于应对大数据挑战。
|
6天前
|
机器学习/深度学习 SQL 分布式计算
介绍 Apache Spark 的基本概念和在大数据分析中的应用。
介绍 Apache Spark 的基本概念和在大数据分析中的应用。
|
6天前
|
分布式计算 DataWorks 大数据
MaxCompute操作报错合集之大数据计算的MaxCompute Spark引擎无法读取到表,是什么原因
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
MaxCompute操作报错合集之大数据计算的MaxCompute Spark引擎无法读取到表,是什么原因
|
6天前
|
分布式计算 大数据 数据处理
[AIGC大数据基础] Spark 入门
[AIGC大数据基础] Spark 入门
143 0
|
6天前
|
分布式计算 大数据 Java
Spark 大数据实战:基于 RDD 的大数据处理分析
Spark 大数据实战:基于 RDD 的大数据处理分析
142 0