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

目录
相关文章
|
3月前
|
分布式计算 Serverless 调度
EMR Serverless Spark:结合实时计算 Flink 基于 Paimon 实现流批一体
本文演示了使用实时计算 Flink 版和 Serverless Spark 产品快速构建 Paimon 数据湖分析的流程,包括数据入湖 OSS、交互式查询,以及离线Compact。Serverless Spark完全兼容Paimon,通过内置的DLF的元数据实现了和其余云产品如实时计算Flink版的元数据互通,形成了完整的流批一体的解决方案。同时支持灵活的作业运行方式和参数配置,能够满足实时分析、生产调度等多项需求。
60748 107
|
4月前
|
SQL 分布式计算 大数据
Paimon 与 Spark 的集成(二):查询优化
通过一系列优化,我们将 Paimon x Spark 在 TpcDS 上的性能提高了37+%,已基本和 Parquet x Spark 持平,本文对其中的关键优化点进行了详细介绍。
118099 30
|
4月前
|
SQL 分布式计算 Apache
流数据湖平台Apache Paimon(六)集成Spark之DML插入数据
流数据湖平台Apache Paimon(六)集成Spark之DML插入数据
188 0
|
4月前
|
SQL 分布式计算 Apache
流数据湖平台Apache Paimon(五)集成 Spark 引擎
流数据湖平台Apache Paimon(五)集成 Spark 引擎
163 0
|
10月前
|
SQL 分布式计算 大数据
Paimon与Spark的集成(一)
Spark 已经成为了大数据领域软件栈中必不可少的组成部分。作为数据湖领域新起的 Paimon,与Spark的深度、全面的集成也将为 Paimon 在准实时场景、离线湖仓场景提供了便利。本文主要介绍一些在 Paimon 新版本中基于 Spark 计算引擎支持的主要功能。
536 1
|
2月前
|
机器学习/深度学习 分布式计算 算法
Spark快速大数据分析PDF下载读书分享推荐
《Spark快速大数据分析》适合初学者,聚焦Spark实用技巧,同时深入核心概念。作者团队来自Databricks,书中详述Spark 3.0新特性,结合机器学习展示大数据分析。Spark是大数据分析的首选工具,本书助你驾驭这一利器。[PDF下载链接][1]。 ![Spark Book Cover][2] [1]: https://zhangfeidezhu.com/?p=345 [2]: https://i-blog.csdnimg.cn/direct/6b851489ad1944548602766ea9d62136.png#pic_center
112 1
Spark快速大数据分析PDF下载读书分享推荐
|
1月前
|
分布式计算 资源调度 大数据
【决战大数据之巅】:Spark Standalone VS YARN —— 揭秘两大部署模式的恩怨情仇与终极对决!
【8月更文挑战第7天】随着大数据需求的增长,Apache Spark 成为关键框架。本文对比了常见的 Spark Standalone 与 YARN 部署模式。Standalone 作为自带的轻量级集群管理服务,易于设置,适用于小规模或独立部署;而 YARN 作为 Hadoop 的资源管理系统,支持资源的统一管理和调度,更适合大规模生产环境及多框架集成。我们将通过示例代码展示如何在这两种模式下运行 Spark 应用程序。
139 3
|
20天前
|
机器学习/深度学习 分布式计算 大数据
Spark 适合解决多种类型的大数据处理问题
【9月更文挑战第1天】Spark 适合解决多种类型的大数据处理问题
31 3
|
24天前
|
分布式计算 大数据 Apache
跨越界限:当.NET遇上Apache Spark,大数据世界的新篇章如何谱写?
【8月更文挑战第28天】随着信息时代的发展,大数据已成为推动企业决策、科研与技术创新的关键力量。Apache Spark凭借其卓越的分布式计算能力和多功能数据处理特性,在大数据领域占据重要地位。然而,对于.NET开发者而言,如何在Spark生态中发挥自身优势成为一个新课题。为此,微软与Apache Spark社区共同推出了.NET for Apache Spark,使开发者能用C#、F#等语言编写Spark应用,不仅保留了Spark的强大功能,还融合了.NET的强类型系统、丰富库支持及良好跨平台能力,极大地降低了学习门槛并拓展了.NET的应用范围。
42 3
|
29天前
|
分布式计算 大数据 数据处理
Apache Spark的应用与优势:解锁大数据处理的无限潜能
【8月更文挑战第23天】Apache Spark以其卓越的性能、易用性、通用性、弹性与可扩展性以及丰富的生态系统,在大数据处理领域展现出了强大的竞争力和广泛的应用前景。随着大数据技术的不断发展和普及,Spark必将成为企业实现数字化转型和业务创新的重要工具。未来,我们有理由相信,Spark将继续引领大数据处理技术的发展潮流,为企业创造更大的价值。