3.0 Spark 图文了解 的灵活分区裁剪优化

  • 电脑网络维修
  • 2024-11-15

Spark 3.0 为咱们带来了许多令人等候的个性。灵活分区裁剪(dynamic partitionpruning)就是其中之一。本文将经过图文的方式来带大家了解什么是灵活分区裁剪。

Spark 中的静态分区裁剪

在引见灵活分区裁剪之前,有必要对 Spark中的静态分区裁剪启动引见。在规范数据库术语中,裁剪象征着优化器将防止读取不蕴含咱们正在查找的数据的文件。例如咱们有以下的查问 SQL:

在这个繁难的查问中,咱们试图婚配和识别 Students 表中 subject = English 的记载。比拟愚昧的做法是先把数据所有 scan进去,而后再经常使用 subject = 'English' 去过滤。如下图所示:

比拟好的成功是查问优化器将过滤器下推到数据源,以便能够防止扫描整个数据集,Spark 就是这么来做的,如下图所示:

在静态分区裁剪技术中,咱们的表首先是分区的,分区过滤下推的思维和上方的 filter push down分歧。由于在这种状况下,假设咱们的查问有一个针对分区列的过滤,那么在实践的查问中可以跳过很多不用要的分区,从而大大缩小数据的扫描,缩小磁盘I/O,从而优化计算的性能。

但是,无理想中,咱们的查问语句不会是这么繁难的。通常状况下,咱们会有多张维表,小表须要与大的理想表启动join。因此,在这种状况下,咱们不能再运行静态分区裁剪,由于 filter 条件在 join 表的一侧,而对裁剪有用的表在 Join的另一侧。比如咱们有以下的查问语句:

关于上方的查问,比拟渣滓的查问引擎最后的执行方案如下:

它把两张表的数据启动关联,而后再过滤。在数据量比拟大的状况下效率可想而知。一些比拟好的计算引擎可以启动一些优化,比如:

其能够在一张表外面先过滤一些无用的数据,再启动 Join,效率自然比前面一种好。但是假设是咱们人来弄,其实咱们可以把 subject ='English' 过滤条件下推到 iteblog.Students 表外面,这个正是 Spark 3.0 给咱们带来的灵活分区裁剪优化。

灵活分区裁剪

在 Spark SQL 中,用户通罕用他们青睐的编程言语并选用他们青睐的 API 来提交查问,这也就是为什么有>

逻辑方案阶段优化

假定咱们有一个具备多个分区的理想表(facttable),为了繁难说明,咱们用不同色彩代表不同的分区。另外,咱们还有一个比拟小的维度表(dimensiontable),咱们的维度表不是分区表。而后咱们在这些数据集上启动典型的扫描操作。在咱们的例子外面,假定咱们只读取维度表外面的两行数据,而这两行数据其实关于另外一张表的两个分区。所以最后执行Join 操作时,带有分区的理想表只须要读取两个分区的数据就可以。

因此,咱们不须要实践扫描整个理想表。为了做到这种优化,一种繁难的方法是经过维度表结构出一个过滤子查问(比如上方例子为 select subjectfrom iteblog.DailyRoutine where subject = 'English'),而后在扫描理想表之前加上这个过滤子查问。

经过这种方式,咱们在逻辑方案阶段就知情理想表须要扫描哪些分区。

但是,上方的物理方案执行起来还是比拟低效。由于外面有重复的子查问,咱们须要找出一种方法来消弭这个重复的子查问。为了做到这一点,Spark在物理方案阶段做了一些优化。

物理方案阶段优化

假设维度表很小,那么 Spark 很或许会以 broadcast hash join 的方式执行这个 Join。Broadcast Hash Join的成功是将小表的数据广播(broadcast)到 Spark 一切的 Executor 端,这个广播环节和咱们自己去广播数据没什么区别,先应用 collect算子将小表的数据从 Executor 端拉到 Driver 端,而后在 Driver 端调用 sparkContext.broadcast 广播到一切Executor 端;另一方面,大表也会构建 hash table(称为 build relation),之后在 Executor端这个广播进来的数据会和大表的对应的分区启动 Join 操作,这种 Join 战略防止了 Shuffle 操作。详细如下:

咱们曾经知道了 broadcast hash join 成功原理。其实灵活分区裁剪优化就是在 broadcast hash join 中大表启动build relation 的时刻拿到维度表的广播结果(broadcast results),而后在 build relation 的时刻(Scan前)进执行态过滤,从而到达防止扫描无用的数据成果。详细如下:

好了,以上就是灵活分区裁剪在逻辑方案和物理方案的优化。

灵活分区裁剪实用条件

并不是什么查问都会启用灵活裁剪优化的,必定满足以下几个条件:

本文关键翻译自:

  • 关注微信

本网站的文章部分内容可能来源于网络和网友发布,仅供大家学习与参考,如有侵权,请联系站长进行删除处理,不代表本网站立场,转载联系作者并注明出处:https://duobeib.com/diannaowangluoweixiu/8331.html

猜你喜欢

热门标签

洗手盆如何疏浚梗塞 洗手盆为何梗塞 iPhone提价霸占4G市场等于原价8折 明码箱怎样设置明码锁 苏泊尔电饭锅保修多久 长城画龙G8253YN彩电输入指令画面变暗疑问检修 彩星彩电解除童锁方法大全 三星笔记本培修点上海 液晶显示器花屏培修视频 燃气热水器不热水要素 热水器不上班经常出现3种处置方法 无氟空调跟有氟空调有什么区别 norltz燃气热水器售后电话 大连站和大连北站哪个离周水子机场近 热水器显示屏亮显示温度不加热 铁猫牌保险箱高效开锁技巧 科技助力安保无忧 创维8R80 汽修 a1265和c3182是什么管 为什么电热水器不能即热 标致空调为什么不冷 神舟培修笔记本培修 dell1420内存更新 青岛自来水公司培修热线电话 包头美的洗衣机全国各市售后服务预定热线号码2024年修缮点降级 创维42k08rd更新 空调为什么运转异响 热水器为何会漏水 该如何处置 什么是可以自己处置的 重庆华帝售后电话 波轮洗衣机荡涤价格 鼎新热水器 留意了!不是水平疑问! 马桶产生了这5个现象 方便 极速 邢台空调移机电话上门服务 扬子空调缺点代码e4是什么疑问 宏基4736zG可以装置W11吗 奥克斯空调培修官方 为什么突然空调滴水很多 乐视s40air刷机包 未联络视的提高方向 官网培修 格力空调售后电话 皇明太阳能电话 看尚X55液晶电视进入工厂形式和软件更新方法 燃气热水器缺点代码

热门资讯

关注我们

微信公众号