概述

Spark在SQL查询方面的性能优化主要分为四个方向七个方面

  • 开发交互方向
    新的Explain格式
    所有join支持hints
  • 动态优化
    自适应查询执行
    动态分区裁剪
  • Catalyst提升
    增强嵌套列的裁剪和下推
    增强聚合的代码生成
  • 基础设施更新
    支持新的Scala和Java版本

一、动态优化

1.自适应查询执行:通过使用运行时的统计信息

1)根据统计信息设置reducer的数量来避免内存和I/O资源的浪费
对reducer的个数进行了优化:避免reduder 空转资源浪费情况

2)选择更优的join策略来提高连接查询性能
基于静态信息统计的基础上加入动态信息统计,在两表join执行时,适时收集两表数据量的变化,及时调整策略
join策略

Shuffle Hash Join:适应于要join的表数据量比较大
将大表按照join的key进行重分区
Broadcast Hash Join:map端join 当一张表数据较小时
broadcast 阶段:小表被缓存在executor中 :
hash join 阶段 :在每个executor中执行hash join
Sort Merge Join: Spark默认的 ,一般适用于两张大表进行join时

​ Cartesian Join:没有指定join key (ON条件)
​ Broadcast Nested Loop Join:当没有合适的join机制可供选择时

​ 优先级:Broadcast Hash Join > Sort Merge Join > Shuffle Hash Join > cartesian Join > Broadcast Nested Loop Join.

3)优化join数据来避免不平衡查询造成的数据倾斜
join的时间取决于最大的分区join时间
表中的数据倾斜导致整个表连接任务的耗时操作
解决:通过对倾斜数据的自适应重分区
2.动态分区裁剪

是从下推演化而来,下推数据静态裁剪,通过将条件下推至数据源,从而减小了上层算子计算的数据量。动态裁剪是在静态裁剪的基础上,加入了运行时的数据裁剪。

补充

查询下推

  • 逻辑优化角度

从逻辑优化的角度来看,查询下推属于是将逻辑查询树中的一些节点下推到叶子结点或接近叶子结点,即更接近数据源的地方,从而使得上层节点的操作所涉及到的数据量大大减少,提高数据处理效率。

  • 物理计划执行角度

从物理计划执行的角度来看,查询下推是将查询的条件下推到数据源,让数据源直接过滤掉与查询结果无关的数据,从而降低数据IO,提高数据的传输和处理效率。

参考

https://zhuanlan.zhihu.com/p/192339214
https://www.cnblogs.com/jmx-bigdata/p/14021183.html

Spark3.0新特性相关推荐

  1. JDK5.0新特性系列---目录

    JDK5.0新特性系列---目录 JDK5.0新特性系列---1.自动装箱和拆箱 JDK5.0新特性系列---2.新的for循环 JDK5.0新特性系列---3.枚举类型 JDK5.0新特性系列--- ...

  2. [转]C# 2.0新特性与C# 3.5新特性

    C# 2.0新特性与C# 3.5新特性 一.C# 2.0 新特性: 1.泛型List<MyObject> obj_list=new List(); obj_list.Add(new MyO ...

  3. Servlet 3.0 新特性概述

    Servlet 3.0 新特性概述 Servlet 3.0 作为 Java EE 6 规范体系中一员,随着 Java EE 6 规范一起发布.该版本在前一版本(Servlet 2.5)的基础上提供了若 ...

  4. Redis 6.0 新特性-多线程连环13问!

    来自:码大叔 导读:支持多线程的Redis6.0版本于2020-05-02终于发布了,为什么Redis忽然要支持多线程?如何开启多线程?开启后性能提升效果如何?线程数量该如何设置?开启多线程后会不会有 ...

  5. WCF4.0新特性体验(3):标准终结点(Standard Endpoints)

    今天在WCF4.0新特性体验第3节,我们介绍WCF4.0里的标准终结点概念,也就是Standard Endpoints. WCF4.0提供了那些标准终结点?他们有什么作用?如何使用标准终结点?如何该表 ...

  6. Servlet 2.0 Servlet 3.0 新特性

    概念:透传. Callback 在异步线程中是如何使用的.?? Servlet 2.0 && Servlet 3.0 新特性 Servlet 2.0 && Servle ...

  7. C#6.0,C#7.0新特性

    C#6.0,C#7.0新特性 C#6.0新特性 Auto-Property enhancements(自动属性增强) Read-only auto-properties (真正的只读属性) Auto- ...

  8. WCF4.0新特性体验(6):路由服务Routing Service(下)

    紧接前文WCF4.0新特性体验(5):路由服务Routing Service(上).今天我们介绍WCF4.0消息路由的实现机制,然后会讲解路由服务的实现过程. [4]WCF与路由服务: 其实在介绍WC ...

  9. 【收藏】C# 2.03.0新特性总结

    c#2.0新特性 范型 我们知道通用的数据结构可以采用object存储任何数据类型.使用object问题是: 显示的强制转带来的代码复杂性 换装箱拆箱的性能损失(为什么有性能损失?因为涉及动态内存分配 ...

最新文章

  1. nvGRAPH原理概述
  2. 2022-2028年中国K酸行业发展现状及前瞻分析报告
  3. CornerNet的配置、训练与测试
  4. linux mysql解锁账号密码忘了怎么办,linux下mysql忘记密码怎么办
  5. phpcms评论的url替换问题
  6. python动态心形代码-Python数学方程式画心型图案源码示例
  7. nodejs事务使用总结
  8. 操作系统复习之线程、对称多处理和微内核
  9. Clonezilla制作镜像时报错:extfsclone.c:bitmap free count err解决办法
  10. Oracle顶级认证OCM考试实战总结
  11. 怎么判断日出时间早晚_个个美哭!2020下半年国内旅行时间表出炉!你最想去哪个?...
  12. nodejs 游戏框架_nodejs游戏服务器框架
  13. 将html表格导出到excel表格,table2excel-将HTML表格内容导出到Excel中_html/css_WEB-ITnose...
  14. vs 2017 专业版 密钥
  15. 思科交换机路由器破解密码
  16. 第6章 项目进度管理
  17. gif透明背景动画_最好用的GIF制作手机app-GIF豆豆--手机版ae
  18. removeClass()
  19. 通过表的.frm和.idb文件备份MySQL表
  20. 企业级运维——Mysql主从复制(异步、半同步、全同步)

热门文章

  1. SURF 特征点检测
  2. mate30e是鸿蒙,华为mate30e和mate30有什么不同 华为mate30e和mate30有什么区别 - 云骑士一键重装系统...
  3. 一孔之见-----小学生教育_ywyuan_新浪博客
  4. 展会直击|成都电子信息博览会,捷配展台现场人气火爆
  5. 无人驾驶运动控制(二):模型预测控制
  6. 转:攻击JavaWeb应用[6]-程序架构与代码审计
  7. #1122 : 二分图二•二分图最大匹配之匈牙利算法
  8. 王者转号仅显示可转移的服务器,王者可以跨系统转移账号了,需要花99,大家怎么看?...
  9. ASCII码转16进制 十六进制转ASCII码
  10. halcon瑕疵检测的简单Demo