但是执行效率上,group by的执行或许更快。因为distinct 最终是会合成一个reduce ,group by 可以多个。
先说结论:能使用group by代替distinc就不要使用distinct,例子:
两个查询,都会在map阶段count,但reduce阶段,distinct只有一个, group by 可以有多个进行并行聚合,所以group by会快。 但这个stackoverflow讨论中有人提出,当distinct后值很小时,distinct更快,因为在map完成了大部分的count。 所以,应该具体测试后决定其性能。
Group By Operator// 分组聚合操作aggregations:count(DISTINCT age)// 聚合函数keys:age(type:int)// 分组的字段mode:hash// 聚合模式,值有 hash:随机聚合,就是hash partition;partial:局部聚合;final:最终聚合outputColumnNames:_col0,_col1// 聚合之后输出列名Statistics:Num rows:126172096Data size:504688384Bas...
注意:在数据量很大的情况下,先使用group by去重再count()计数,效率要高于count(distinct *) 技巧二:利用窗口函数grouping sets、cube、rollup 1、GROUPING SETS():在group by查询中,根据不同的维度组合进行聚合,等价于 将不同维度的group by结果集进行union all。聚合规则在括号中进行指定。
hive里的group by和distinct 前言 今天才明确知道group by实际上还是有去重读作用的,其实细想一下,按照xx分类,肯定相同的就算是一类了,也就相当于去重来,详细的看一下。 group by 看一下实例1: 按照这个去分类,最后结果只有一个,达到了去重的效果;实际上,所谓去重
一、Hive中的DISTINCT和GROUP BY的区别 Hive是基于Hadoop的数据仓库工具,支持使用类SQL语言查询存储在Hadoop集群中的数据。在Hive中,DISTINCT和GROUP BY都是用于对数据进行聚合操作的关键词,但是它们的作用不同。 DISTINCT:用于去重,返回数据集中少数的值,不进行任何聚合操作,它适用于查询中只需要查看不同值而...
3.2 sort by 代替 order by 3.3 group by 代替 count(distinct) 3.4 group by 配置调整 3.5 倾斜均衡配置项 4. join 基础优化 4.1 Hive join的三种方式 4.2 join 优化 5 . 优化小结 内容 架构优化 参数优化 SQL优化 Hive的调优 Hive作为大数据领域常用的数据仓库组件,在设计和开发阶段需要注意效率。
group by 可以将数据分组再聚合,适合数据量比较大的场景,在数据很大的情况下效率优于 distinct。 编辑 任务开始时间为 2022-05-16 13:00:30,大概执行时间为 1小时,可以看到同样数据大小(大数据量)的情况下,groupby 的性能优于 distinct。 三.Distinct & 分组 ...