Spark 的集成

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 Tair(兼容Redis),内存型 2GB
简介: Spark 的集成

Paimon 与 Spark 的集成(二):查询优化

在大数据处理领域,Paimon 和 Spark 的集成为我们提供了强大的数据摄入、流式订阅和实时查询能力。本文将详细介绍Paimon在SparkSQL查询性能上的一系列关键优化点,这些优化使得Paimon x Spark在TpcDS上的性能提升了37+%,与Parquet x Spark基本持平。

动态分区裁剪

动态分区裁剪(Dynamic Partition Pruning,DPP)是SQL优化中的一个常见优化点,它通过谓词下推(Predicate Push Down)来最小化从数据源中读取数据的IO成本,从而减少计算成本。在数仓中,DPP特别有用,例如在事实表和维度表的关联查询中。Paimon通过SparkDataSourceV2的查询框架实现了动态分区裁剪的能力,显著减少了参与join的数据量,提升了查询性能。

Exchange 复用

Exchange是Spark中物理计划中的一个关键操作,对应逻辑计划中的Shuffle。在复杂的SQL中,通过公共表表达式(Common Table Expression,CTE)定义的SQL片段可以被多次使用。Spark提供了Exchange复用的优化,期待的执行计划可以减少不必要的冗余计算,降低IO和网络的开销。

动态调整 Scan 并发任务

在实际执行时,调整并发任务是影响作业运行性能的关键因素之一。Spark提供了参数来调整Join或Agg等算子的并发,但这些无法影响到读取数据源Scan阶段的并发。Paimon提供了基于当前作业的可用core数来动态调整数据源的数据分片的能力,从而提升查询效率。

合并标量子查询

合并标量子查询优化会遍历整个SQL逻辑执行计划,提取出标量子查询(Scalar SubQuery),尝试将多个标量子查询合并起来,使得仅执行一次子查询得到多个标量值。这种优化有效地减少了冗余的计算,提升了查询性能。

Cost-Based 优化

SparkSQL允许使用基于成本的优化(Cost-Based Optimizer,CBO)来提升查询性能,主要用于多路Join的场景。CBO依赖于计算Cost的模型,以及表的表级和列级统计信息的收集。Paimon在元数据中增加了statistics的信息,使得SparkSQL可以利用Paimon的表级/列级信息进行查询优化。

优化效果

通过上述优化,Paimon x Spark的性能得到了显著提升。在没有column级统计信息的情况下,优化后的Paimon和Parquet已经基本持平。开启column级统计信息后,Paimon较Parquet慢约8%,这将是性能优化继续跟进的方向之一。

目录
相关文章
|
10天前
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
40 2
ClickHouse与大数据生态集成:Spark & Flink 实战
|
11天前
|
分布式计算 大数据 OLAP
AnalyticDB与大数据生态集成:Spark & Flink
【10月更文挑战第25天】在大数据时代,实时数据处理和分析变得越来越重要。AnalyticDB(ADB)是阿里云推出的一款完全托管的实时数据仓库服务,支持PB级数据的实时分析。为了充分发挥AnalyticDB的潜力,将其与大数据处理工具如Apache Spark和Apache Flink集成是非常必要的。本文将从我个人的角度出发,分享如何将AnalyticDB与Spark和Flink集成,构建端到端的大数据处理流水线,实现数据的实时分析和处理。
44 1
|
6月前
|
分布式计算 API Apache
Spark与Elasticsearch的集成与全文搜索
Spark与Elasticsearch的集成与全文搜索
|
6月前
|
SQL 分布式计算 大数据
Paimon 与 Spark 的集成(二):查询优化
通过一系列优化,我们将 Paimon x Spark 在 TpcDS 上的性能提高了37+%,已基本和 Parquet x Spark 持平,本文对其中的关键优化点进行了详细介绍。
118237 30
|
6月前
|
存储 缓存 分布式计算
Spark与云存储的集成:S3、Azure Blob Storage
Spark与云存储的集成:S3、Azure Blob Storage
|
6月前
|
消息中间件 分布式计算 Kafka
Spark与Kafka的集成与流数据处理
Spark与Kafka的集成与流数据处理
|
4月前
|
监控 druid Java
spring boot 集成配置阿里 Druid监控配置
spring boot 集成配置阿里 Druid监控配置
280 6
|
4月前
|
Java 关系型数据库 MySQL
如何实现Springboot+camunda+mysql的集成
【7月更文挑战第2天】集成Spring Boot、Camunda和MySQL的简要步骤: 1. 初始化Spring Boot项目,添加Camunda和MySQL驱动依赖。 2. 配置`application.properties`,包括数据库URL、用户名和密码。 3. 设置Camunda引擎属性,指定数据源。 4. 引入流程定义文件(如`.bpmn`)。 5. 创建服务处理流程操作,创建控制器接收请求。 6. Camunda自动在数据库创建表结构。 7. 启动应用,测试流程启动,如通过服务和控制器开始流程实例。 示例代码包括服务类启动流程实例及控制器接口。实际集成需按业务需求调整。
346 4
|
4月前
|
消息中间件 Java 测试技术
【RocketMQ系列八】SpringBoot集成RocketMQ-实现普通消息和事务消息
【RocketMQ系列八】SpringBoot集成RocketMQ-实现普通消息和事务消息
304 1
|
5月前
|
消息中间件 Java Kafka
springboot集成kafka
springboot集成kafka
166 2

相关实验场景

更多
下一篇
无影云桌面