相关动态
Hive优化器原理与源码解析系列--优化规则HiveAggregateProjectMergeRule(十六)
2024-12-26 19:34

目录

背景

优化规则HiveAggregateProjectMergeRule

总结

背景

这篇文章来讲优化规则HiveAggregateProjectMergeRule,主要功能是将Project投影操作之上的Aggregate聚合函数操作两者进行合并,前提是只有当聚合函数的GroupBY分组表达式和参数是字段引用(即,不是表达式)时,才满足优化规则使用条件。如果识别到Project上的Aggregate操作,如果是通过Project做的汇总,进行两者合并或将Project移除,即group by 字段和投影字段相同,将两者合并。在某些情况下,此规则具有修剪的效果:聚合将使用比Projetct投影操作更少的列。

在CalciteAPI中关于构建Aggregate汇总操作对象组成元素。它与SQL查询语句中的GROUPBY运算符以及SELECT子句中的聚合函数相对应。

说明:groupSets的所有成员都必须是groupSet的子集。对于简单的GROUP BY,groupSets是一个包含groupSet的单例列表。如果未指定GROUP BY,或者如果指定GROUP BY(),则groupSet将为空集,并且groupSets将有一个元素,即该空集。如果指定了多维数据集、汇总集或分组集,则groupSet将有其他元素,但每个元素都必须是groupSet的一个子集,并且必须按包含进行排序:(0,1,2),(1),(0,2),(0),()。

优化规则HiveAggregateProjectMergeRule

1)matches方法逻辑详解

matches方法返回此规则Rule是否可能与给定的操作数operands匹配,但是此方法的任何实现都可以给出误报,也就是说虽然规则与操作数匹配,但随后具OnMatch(ReloptRuleCall)而不生成任何后续任务。

判断由RelOptCall调用的优化规则Rule是否与输入参数RelNode关系表达式匹配,即此优化规则Rule能否应用到一个RelNode关系表达式树上。

如果此表达式,含有GroupId,这条规则不能应用,因为GroupId的变化,Value也会发生改变

Group_ID是group_sets集合中分组ID(类似排列组合的分组ID,1组、2组、3组等)。下面例子会使用group_sets和GROUPINGID进行查询,其中的 GROUPINGID,表示结果属于哪一个分组集合。

例如:

Hive优化器原理与源码解析系列--优化规则HiveAggregateProjectMergeRule(十六)

2)onMatch方法逻辑详解

接收有关一条规则匹配的通知。同时此方法被调用,call.rels保存了与规则Rule的操作数Operands匹配上的关系表达式RelNode集合;call.rels[0]是根表达式。通常一条规则Rule会检查这些节点是否有效匹配,创建一个新表达式RelNode(等价的)然后调用RelOptRuleCall.transformTo(org.apache.calcite.rel.RelNode, java.util.Map<org.apache.calcite.rel.RelNode, org.apache.calcite.rel.RelNode>)注册表达式。而RelOptRuleCall用一系列RelNode关系表达式集合作为参数,对RelOptRule优化规则的调用。

call.rel(1)获取Project投影操作,call.rel(0)也即获取的Project操作之上Aggregate操作。apply函数将Project投影操作之上的Aggregate聚合函数操作两者进行合并的关键,返回优化后的非空的RelNode,RelOptRuleCall调用转换方法注册到RelSet集合,以备优化器构建最优执行计划。

3)apply方法涉及到等价变换的具体过程

传入参数为Aggregate操作对象和Project投影操作对象

RexInputRef:引用输入关系表达式RelNode的字段的变量。

输入的字段是基于0的。如果有多个输入,则它们将连续编号。如果连接的输入是如下:

因此 RexInputRef(3, Integer) is 字段 DEPTNO2的正确的引用.

2 .遍历调用汇总函数,函数列表,判断AGG引用的字段是否在Project投影中引用,而且是字段引用,而不是表达式的引用,否则将跳出优化。

3. 如果groupset顺序不同,或者包含重复,则添加一个Project。判断这两个列表是否相等,如果不相等,则进行遍历newKeys索引,并查找对应newGroupSet索引位置,添加到postList中。使用new Aggregate和posList列表创建一个new Project投影。这里完成了Aggregate和Project合并的操作作为一个RelNode。

总结

    以上就是本篇文章【Hive优化器原理与源码解析系列--优化规则HiveAggregateProjectMergeRule(十六)】的全部内容了,欢迎阅览 ! 文章地址:http://ww.kub2b.com/news/13044.html
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 企库往资讯移动站 http://ww.kub2b.com/mobile/ , 查看更多   
最新文章
Shams:如果火箭季后赛早早被淘汰 他们很可能会积极追求杜兰特
直播吧04月17日讯 今日ESPN名记Shams Charania做客节目《NBA COUNTDOWN》中谈到了火箭追逐KD的可能性。Shams表示:“如果球队能
手机是什么时候出现的手机是哪个国家发明的「手机是什么时候出现的」
手机,这个如今几乎人手一部的通讯工具,其发展历程漫长而有趣。要追溯其起源,我们需要回到上世纪初。一、早期探索阶段早在20世
再建新厂、增加注资、积极纳税 北京税企协同共建优质营商环境
4月16日,北京市税务局“民企显身手”系列媒体采访活动正式启动。此次活动以“政策落实有力度、服务升级有温度、营商环境有厚度
oppo手机里的记事本在哪里手机记事本在哪里「oppo手机里的记事本在哪里」
“盾牌”是古代作战时一种手持格挡,用以掩蔽身体,抵御敌方兵刃、矢石等兵器进攻的防御性兵械,呈长方形或圆形,盾的中央向外凸
个人业务利润降30%,3万亿规模宁波银行也有“烦恼”
文 | 刘振涛资本市场进入财报披露季,上市企业过去一年的成绩令市场高度关注,特别是市场“分红大户”——上市银行的成绩备受关
闽北从观光到沉浸 解锁旅游新体验
  中新网南平4月17日电 (记者 张丽君)依托核心景区武夷山,闽北南平凭借创新的文旅融合模式,实现了从传统观光游到沉浸式深度
重新定义奢华旅游,情绪价值比“钞能力”更重要
【文/观察者网 王勇 编辑/赵乾坤】新加坡“亚洲新闻台”日前报道称,越来越多的千禧一代、Z世代以及来自亚洲和中东等新兴市场的
最便宜的红米手机——红米7A红米手机预定「最便宜的红米手机——红米7A」
5.28号下午,在红米K20系列发布会上,出现了一款史上最便宜的红米手机——红米 7A,售价仅549元起,如此便宜的手机究竟配置如何呢
如何开启手机定位功能,确保精准定位与安全使用手机定位功能在哪里开启「如何开启手机定位功能,确保精准定位与安全使用」
检查手机设置:在设定中找到“隐私”或“位置服务”选项。对于不同品牌的手机,可能会有所不同。例如,iPhone 在设置中有明显的
华为一键测速手机测速「华为一键测速」
华为一键测速有了这款app你就可以实时了解自己的网速了,更为专业强大的技术支撑,还能直接查看网络的各方面信息,各位朋友们尽