hive里的group by和distinct

前言

今天才明确知道group by实际上还是有去重读作用的,其实细想一下,按照xx分类,肯定相同的就算是一类了,也就相当于去重来,详细的看一下。

group by
  • 看一下实例1:
hive> select * from test;
OK
zhao 15 20170807
zhao 14 20170809
zhao 15 20170809
zhao 16 20170809 hive> select name from test;
OK
zhao
zhao
zhao
zhao hive> select name from test group by name; ... OK
zhao
Time taken: 40.273 seconds, Fetched: 1 row(s)

按照这个去分类,最后结果只有一个,达到了去重的效果;实际上,所谓去重,肯定是两个一样的才可以去重,下面试一下两列的效果:

hive> select name,age from test group by name,age;
... OK
zhao 14
zhao 15
zhao 16
Time taken: 36.943 seconds, Fetched: 3 row(s) hive> select name,age from test group by name;
FAILED: SemanticException [Error 10025]: Line 1:12 Expression not in GROUP BY key 'age'

只group by name就会出错,想一下只用name去做那么age不同就没法处理了,也合情合理。

distinct

这个也比较简单,就是去重:

hive> select distinct name from test;
... OK
zhao
Time taken: 37.047 seconds, Fetched: 1 row(s) hive> select distinct name,age from test;
OK
zhao 14
zhao 15
zhao 16
Time taken: 39.131 seconds, Fetched: 3 row(s) hive> select distinct(name),age from test;
OK
zhao 14
zhao 15
zhao 16
Time taken: 37.739 seconds, Fetched: 3 row(s)
区别
  • 如果数据较多,distinct效率会更低一些,一般推荐使用group by。
  • 至于原因,推荐这篇文章

hive里的group by和distinct的更多相关文章

  1. HIVE点滴:group by和distinct语句的执行顺序

    同一条语句之中,如果同时有group by和distinct语句,是先group by后distinct,还是先distinct后group by呢? 先说结论:先group by后distinct. ...

  2. Hadoop Hive概念学习系列之hive里的优化和高级功能(十四)

    在一些特定的业务场景下,使用hive默认的配置对数据进行分析,虽然默认的配置能够实现业务需求,但是分析效率可能会很低. Hive有针对性地对不同的查询进行了优化.在Hive里可以通过修改配置的方式进行 ...

  3. group by和distinct语句的执行顺序

    同一条语句之中,如果同时有group by和distinct语句,是先group by后distinct,还是先distinct后group by呢? 先说结论:先group by后distinct. ...

  4. MYSQL 行转列 以及基本的聚合函数count,与group by 以及distinct组合使用

    在统计查询中,经常会用到count函数,这里是基础的 MYSQL 行转列 以及基本的聚合函数count,与group by 以及distinct组合使用 -- 创建表 CREATE TABLE `tb ...

  5. Hadoop Hive概念学习系列之hive里的分区(九)

    为了对表进行合理的管理以及提高查询效率,Hive可以将表组织成“分区”. 分区是表的部分列的集合,可以为频繁使用的数据建立分区,这样查找分区中的数据时就不需要扫描全表,这对于提高查找效率很有帮助. 分 ...

  6. HIVE 不支持group by 别名

    hive不支持group by 别名,如果需要group by 别名的情况,可以使用 别名的 值作为group by 的值

  7. (MySQL里的数据)通过Sqoop Import Hive 里 和 通过Sqoop Export Hive 里的数据到(MySQL)

    Sqoop 可以与Hive系统结合,实现数据的导入和导出,用户需要在 sqoop-env.sh 中添加HIVE_HOME的环境变量. 具体,见我的如下博客: hadoop2.6.0(单节点)下Sqoo ...

  8. Hadoop Hive概念学习系列之hive里的索引(十三)

    Hive支持索引,但是Hive的索引与关系型数据库中的索引并不相同,比如,Hive不支持主键或者外键. Hive索引可以建立在表中的某些列上,以提升一些操作的效率,例如减少MapReduce任务中需要 ...

  9. Hadoop Hive概念学习系列之hive里的扩展接口(CLI、Beeline、JDBC)(十六)

    <Spark最佳实战  陈欢>写的这本书,关于此知识点,非常好,在94页. hive里的扩展接口,主要包括CLI(控制命令行接口).Beeline和JDBC等方式访问Hive. CLI和B ...

随机推荐

  1. Jetty安装配置

    1) 从官方网站下载绿色版的jetty 下载地址:http://download.eclipse.org/jetty/ 我下载的是 jetty-distribution-7.5.4.v20111024 ...

  2. C语言学习笔记 (009) - 对函数的进一步讨论

    一.给main函数传参: # include <stdio.h> int main(int argc,char **argv){ printf(]); ; } 二.指向函数指针变量的定义 ...

  3. php 执行命令函数

    /** Method to execute a command in the terminal Uses : 1. system 2. passthru 3. exec 4. shell_exec * ...

  4. 【IL】IL入门

    1.IL基本介绍 1.1 CLR介绍 在介绍IL之前,先说一说CLR.CLR的全称Commen Language Runtime 公共语言运行时.因为CLR的存在,使得多语言开发成为可能.下面给出一张 ...

  5. java 高性能读模式(译)

    原文地址:http://tutorials.jenkov.com/java-performance/read-patterns.html 好久没翻译了,逛知乎,无意间发现的一个链接,写的太好了,而且内 ...

  6. appium简明教程(1)——appium和它的哲学世界

    什么是appium? 本文已经迁移到测试教程网,后续更新会在测试教程网更新. 下面这段介绍来自于appium的官网. Appium is an open-source tool you can use ...

  7. gtest测试代码编写思想

    mockXXX类 . testXXX类 . mock method 1. mockXXX 类,通常使用继承测试目标类的方法,来方便针对目标类的测试提供部分扩展功能,比如为protected 成员添加g ...

  8. Google Guava中的前置条件

    前置条件:让方法调用的前置条件判断更简单. Guava在Preconditions类中提供了若干前置条件判断的实用方法,我们建议[在Eclipse中静态导入这些方法]每个方法都有三个变种: check ...

  9. 各Spring-Boot-Starters介绍(转)

    原文传送门:Spring Boot application starters ↑传送门里有各Spring-Boot-Starters的依赖pom.xml(一般人我不告诉他) 注意:此为初订版,博主渣翻 ...

  10. 个人用户使用genymotion 模拟器

    genymotion android模拟器速度快,比较好用.对公司使用的是要收费的,但是对个人使用还是免费的,所以个人用户还可以继续使用.使用方法 1.注册账号,填写用户名.邮箱.密码.公司类型(选g ...