spark 发展史,最近迎来 3.0 时代

Spark 3.0引入了动态分区裁减、自适应查询执行、GPU调度、Data Source API V2改进和更好的ANSI SQL兼容性。动态分区显著提升性能,自适应查询优化执行计划,GPU支持加速计算,API扩展增强数据源功能,而SQL兼容性改善则扩大了Spark的应用范围。
摘要由CSDN通过智能技术生成

注:以下图片均引用自2019年阿里云栖大会

Spark发展史

1 动态分区(Dynamic Partition Pruning)

在3.0以前,spark是不支持动态分区的,所谓动态分区就是针对分区表中多个表进行join的时候,在on后面的条件语句满足一定的要求后就会进行自动动态分区裁减优化,比如:

1SELECT t1.id,t2.pKey

2FROM t1

3JOIN t2

4ON t1.pKey = t2.pKey

5AND t2.id < 2;

上面这条SQL语句在没有使用动态分区的情况下执行过程如下图所示:

在使用了动态分区以后执行过程变成了下图:

可以看到之前进行join的时候对t1表中满足on条件的所有数据进行扫描,然后再把两张表进行join,在加入动态分区之后,我们过滤掉了t1表中的无用数据,大大减少了join时的内存计算开销,在实际环境中同样的代码,性能提升了有33倍!

2

自适应查询执行(Adaptive Query Execution)

自适应查询是指对执行计划按照实际数据分布和组织情况,评估其执行所消耗的时间和资源,从而选择代价最小的计划去执行。一般数据库的优化器有两种,一种是基于规则的优化器(RBO)࿰

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值