栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

HIve的聚合模式室友不知道,我学会了给他们讲

HIve的聚合模式室友不知道,我学会了给他们讲

只要我以为,这不是误会,谁会是宝贝

小谈:

        今天没有摆烂,今天大早上起来在学校用土豆做的服务器上面选课,说实话奥,分批次选课,顶多不到8000多人、就卡的不得了,咱Java学的不精,看到各个微信公众号推送的高并发变成广告,建议学校的领导去学学高并发。而且也不是同时在线八千人。估计顶多两三千人,最多四五千人把。我的评价是不如原神

Hive中的聚合模式

        什么是聚合?聚合就是将多行的数据缩减成一行或者是少数几行的计算模式。

        其实在我们刚开始学习mr的时候,就用到了聚合模式。

        举个例子 wordCount

        hello 1                 hello 1,1                      hello 2

        word 1                 word 1                         word 1

        hello 1                 time 1                          time 1

        time 1        

Map阶段                 + Shuffle阶段                 Reduce阶段

        如果使用mr代码来写,在reduce里面就是遍历values,然后将其累加。

        这就是Reduce的代码,我们可以在shuffle中进行预聚合。这样的话,在Reduce阶段就可以少很多工作量。

        就好比,让你一次性吃完这份烤全羊,那肯定不可能,但是让你分两次吃,中午吃一口,下午吃一口。渍渍渍,吃完了。一口容易噎死,但是两口就可以解决。道理是这个道理,下面来看看各种聚合的模式把

Distinct模式

        在上一篇博客中,我们提到了distinct用来去重的,会group by分组。

        如果我们在Hive的Map阶段开启预聚合,那么distinct会先在Map阶段预聚合,然后在Reduce阶段进行全局的聚合。

        在Map阶段的预聚合之后,我们会过滤掉一批数据,这样在Reduce里面的数据就少了。就像水库一样,水大的时候,水库就会先堵水,慢慢放水。这样下游的居民和田地不会被泛滥的洪水所侵入,如果没有水库,水流直接飞泻,那么居民区和田地都会被洪水冲刷。造成经济损失。

     

 set hive.map.aggr=true;--开启Map端的聚合
 select distinct s_score from student_tb_orc

        首先开启Map端的聚合,会在map阶段的时候对s_score进行预聚合,输出不重复的s_age。

然后在Reduce中将Map阶段中输出的s_age进行全局聚合。在Map端的预聚合会根据s_age进行排序,从小到大。

Count(*),Count(列)的聚合

        这篇文章以前讲过,请移步

https://blog.csdn.net/weixin_46300771/article/details/122371720?spm=1001.2014.3001.5501

可计算中间结果的聚合模式

        通常计算过程中,数据如果可以被聚合,那么我们会在开始进行局部聚合,将局部聚合的数据汇总到一起,在进行总的聚合。

        这种聚合模式是非常的高效的,因为大量的数据在前面的数据中已经被处理掉了,之后处理的数据的量并不会造成负担。

        常见的聚合函数sum,max,avg.下面以sum为例子进行讲解。

        通过先对两个文件的数据分别进行求和,然后将各个文件的总合聚合在一起,然后相加。

        很明显,在reduce的时候数据量已经很少了几乎已经不需要继续计算了

不可计算中间结果的聚合模式

        上面讲的是不可计算中间结果的聚合模式,现在讲的是可聚合的中间结果的聚合模式。

        前面数据倾斜的博客里面见过collection_set这个函数就是中介结果不可计算,会将一整个字段的所有数据放到一个数组里面。为什么说它是不可计算中间结果呢?

        很简单,因为它是将数据都存放在数组里面,仅此而已,同时我们也没有对他进行计算。

举个例子,让你心服口服

explain select collect_list(s_score) from student_tb_orc;

从执行计划表里面可以看出来

value expressions:_col10(type : array)

总结:

好好学习,天天向上。

Hive中你不知道的聚合到此结束,下午更新表连接。’’

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/710686.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号