spark3新特性之动态分区裁剪

本文介绍了 Spark 中的静态分区裁剪和动态分区裁剪。静态分区裁剪可减少数据扫描和磁盘 I/O。动态分区裁剪是 Spark 3.0 的特性,在逻辑计划和物理计划阶段有不同优化方式,还说明了其适用条件,如相关参数设置、表类型和 Join 类型等。

Spark3.0为我们带来了许多令人期待的特性。Spark中的静态分区裁剪在介绍动态分区裁剪之前,有必要对Spark中的静态分区裁剪进行介绍。因此,在这种情况下,我们不能再应用静态分区裁剪,因为filter条件在join表的一侧,而对裁剪有用的表在Join的另一侧。Spark将这个查询转化为一种易于理解的形式,我们称它为查询的逻辑计划。物理计划阶段优化如果维度表很小,那么Spark很可能会以broadcasthashjoin的形式执行这个Join。

Spark 3.0 为我们带来了许多令人期待的特性。动态分区裁剪(dynamic partition pruning)就是其中之一。本文将通过图文的形式来带大家理解什么是动态分区裁剪。

Spark 中的静态分区裁剪

在介绍动态分区裁剪之前,有必要对 Spark 中的静态分区裁剪进行介绍。在标准数据库术语中,裁剪意味着优化器将避免读取不包含我们正在查找的数据的文件。例如我们有以下的查询 SQL:

1

<ol><li>Select * from iteblog.Students where subject = 'English'; </li></ol>

在这个简单的查询中,我们试图匹配和识别 Students 表中 subject = English 的记录。比较愚蠢的做法是先把数据全部 scan 出来,然后再使用 subject = 'English' 去过滤。如下图所示:


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值