spark3.x新特性

Adaptive Query Execution自适应查询(SparkSQL)

由于缺乏或者不准确的数据统计信息(元数据)和对成本的错误估算(执行计划调度)导致生成的初始执行计划不理想

在Spark3.x版本提供Adaptive Query Execution自适应查询技术

通过在"运行时"对查询执行计划进行优化,允许Planner在运行时执行可选计划,这些可选计划将会基于运行时数据

统计进行动态优化,从而提高性能.

Adaptive Query Execution AQE主要提供了三个自适应优化:

  • 动态合并Shuffle Partitions

    可以动态调整shuffle分区的数量。用户可以在开始时设置相对较多的shuffle分区数,AQE会在运行时将相邻的小分区合并为较大的分区。

  • 动态调整Join策略

    此优化可以在一定程度上避免由于缺少统计信息或着错误估计大小(当然也可能两种情况同时存在),而导致执行计划性能不佳的情况,比如某个join操作中其中一个数据集很小,通过网络io的shuffle次数会比较多。这种自适应优化可以在运行时sort merge join转换成broadcast hash join,从而进一步提升性能,也就是我们之前提到的将小数据集发送到各executor的线程中

  • 动态优化倾斜Join(Skew Joins)

    skew joins可能导致负载的极端不平衡,并严重降低性能。在AQE从shuffle文件统计信息中检测到任何倾斜后,它可以将倾斜的分区分割成更小的分区,并将它们与另一侧的相应分区连接起来。这种优化可以并行化倾斜处理,获得更好的整体性能。A0分组的数据量比较大,会动态给它拆分,达到各分组数据集大小平衡

触发条件:

l.分区大小>spark.sql.adaptive.skewJoin.skewedPartitionFactor(default:=lO)*"median partition size(中位数分区大小)

2.分区大小>spark.sql.adaptive.skewJoin.skewedPartitionThresholdInBytes(default=256MB)

开启AQE方式

set spark.sql.adaptive.enabled true;

总的来看,我们无需人为设置复杂参数,只需设置AQE,spark就可以自动化优化sparksql查询

动态分区裁剪

该特性无需人为开启,spark3.x会根据具体sparksql语句来实现分区数的动态裁剪,提升性能

koalas API

该api是为了让开发者能在分布式环境中,模拟pandas数据处理,更高效地处理大数据,弥补pandas仅限单节点运行的缺点,我们python开发者就有两种编程选择,pyspark和koalas

相关推荐
小泊客29 分钟前
使用讯飞星火 Spark X1-32K 打造本地知识助手
大数据·分布式·spark·大模型应用·本地知识助手
wangqiaowq1 小时前
StarRocks 3.5.7 安装部署
大数据
PPT百科1 小时前
PPT插入的音乐怎么让它播放到某一页就停?
大数据·职场和发展·powerpoint·职场·ppt模板
码上地球2 小时前
大数据成矿预测系列(八) | 从定性到概率:逻辑回归——地质统计学派的“集大成者”
大数据·逻辑回归
拓端研究室2 小时前
专题:2025中国医疗器械出海现状与趋势创新发展研究报告|附160+份报告PDF、数据、可视化模板汇总下载
大数据·人工智能·pdf
zskj_zhyl2 小时前
科技向暖,银发无忧:十五五规划中智慧养老的温度革命
大数据·人工智能·科技·物联网·生活
muxue1783 小时前
Hadoop集群搭建(上):centos 7为例(已将将安装所需压缩包统一放在了/opt/software目录下)
大数据·hadoop·centos
阿里云大数据AI技术3 小时前
【跨国数仓迁移最佳实践11】基于 MaxCompute Resource & Quota策略优化实现资源管理性能与成本最优平衡
大数据
Elastic 中国社区官方博客4 小时前
Elasticsearch 的结构化文档配置 - 递归分块实践
大数据·人工智能·elasticsearch·搜索引擎·ai·全文检索·jenkins
草明4 小时前
Elasticsearch 报错:index read-only / allow delete (api) 深度解析与解决方案
大数据·elasticsearch·jenkins