GreenPlum Hash聚合简析

简介: GreenPlum Hash聚合简析

GreenPlum Hash聚合简析


Hash聚合相关结构体


首先需要了解Hash表是什么结构?该Hash表在哪个结构里进行管理?如何和聚合算子的结构联系起来?

从下图可以看到:

1)Hash表位于:AggState聚合算子状态描述结构的perhash中,即hashtable

2)hash表的hash函数由perhash->hashfunctions进行描述,其实是个二维数组指针,包含每个hash列的hash函数描述。

3)Hash函数的OID来自Agg结构体的grpOperators数组。Hash探测中的比较函数的OIDeqfuncoids,通过:


BuildTupleHashTable->BuildTupleHashTableExt->ExecBuildGroupingEqual

   将eqfuncoids转换 成计算步骤tab_eq_func

4)Hash表的hash桶是TupleHashEntryData* dataKey值通过hash函数hash后与sizemask进行与操作,结果为数组下标。也就是定位到哪个hash桶。

5)Hash桶结构体中包含:MinimalTuple firstTuple,也就是每个分组的第一个值。而additionalAggStatePerGroupData结构的指针,保存每个分组的聚合计算中间值。

6)每次聚合计算时,从下层节点拿到一个tuple,然后通过hash映射到对应的hash桶。拿到对应的AggStatePerGroupData,将其赋给AggState中的hash_pergroup。将hash_pergroup带入聚合计算函数,将计算结果保存到hash_pergroup中。这样就完成了分组聚合。

640.png


实例解析


比如,一组数组:1 1  2  2  3  3进行count

1)拿到第一个1,经hash函数映射后得到data[1],该桶下的additional为开始为空,此时申请一个AggStatePerGroupData空间,并放到additional下。

2)将该AggStatePerGroupData地址给了AggStatehash_pergoup

3)hash_pergoup带入聚合计算函数中,transValueDatum转换成数值后加1

4)接着拿到第二个1,同理,得到data[1],此时他的additional已经有AggStatePerGroupData,将其付给hash_pergoup带入聚合计算函数中进行计算。计算后transValue2。也就是1的个数是2

5)同理,计算23这个两个分组。分别得到3个分组:1的个数是22的个数是23的个数是2。

目录
相关文章
|
3月前
|
分布式计算 分布式数据库 Spark
17张图带你彻底理解Hudi Upsert原理
17张图带你彻底理解Hudi Upsert原理
375 1
|
4天前
|
存储 缓存 OLAP
大白话彻底搞懂 HBase Rowkey 设计和实现方式
HBase 由于它存储和读写的高性能,在 OLAP 即时分析中发挥着重要的作用。而 RowKey 作为 HBase 的核心知识点,其设计势必会影响到数据在 HBase 中的分布,还会影响我们查询效率,可以说 RowKey 的设计质量关乎了 HBase 的质量。
|
29天前
|
SQL 分布式计算 MaxCompute
云架构数据倾斜问题之排序优化中的CLUSTER BY如何解决
云架构数据倾斜问题之排序优化中的CLUSTER BY如何解决
|
3月前
|
存储 监控 数据库
Flink CDC产品常见问题之Lookup Join之后再分组聚合部分数据从零开始如何解决
Flink CDC(Change Data Capture)是一个基于Apache Flink的实时数据变更捕获库,用于实现数据库的实时同步和变更流的处理;在本汇总中,我们组织了关于Flink CDC产品在实践中用户经常提出的问题及其解答,目的是辅助用户更好地理解和应用这一技术,优化实时数据处理流程。
|
3月前
|
SQL 存储 HIVE
Hive中的分桶表是什么?请解释其作用和使用场景。
Hive中的分桶表是什么?请解释其作用和使用场景。
144 0
|
关系型数据库
GreenPlum和openGauss进行简单聚合时对扫描列的区别
GreenPlum和openGauss进行简单聚合时对扫描列的区别
119 0
|
缓存 自然语言处理 数据挖掘
白话Elasticsearch50-深入聚合数据分析之基于doc values正排索引的聚合内部原理
白话Elasticsearch50-深入聚合数据分析之基于doc values正排索引的聚合内部原理
96 0
|
存储 数据库 索引
五分钟了解Palo Doris的索引原理及应用场景!
五分钟了解Palo Doris的索引原理及应用场景!
239 0