博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hive数据查询
阅读量:5458 次
发布时间:2019-06-15

本文共 1328 字,大约阅读时间需要 4 分钟。

在hive查询中有【两种】情况是不执行MR的。

1). Limit关键字限制查询的记录数,结果是随机的。下面的查询语句从 Student  表中随机查询5条记录:

hive> select * from student limit 5;

2). 基于分区的查询。【其中,date是分区字段】 

hive> select * from logs where logs.date='2015-01-01' limit 5;

1. order by + limit关键字

 在 hive.mapred.mode=strick 模式下order by 必须和 Limit 联合使用。HQL不支持Top语句,结合Sort by + Limit可以实现 Top 效果。

select * from student order by age desc limit 5;

2.子查询

  Hive只允许子查询出现在SELECT 语句的FROM子句中。其中,res为子查询结果的别名  

select a from (select a from t1 union all select a from t2) res Group By a;

3.五种子句的严格顺序

where → group by → having → order by → limit

4.where和having的区别

//where是先限定性条件再分组(对原始数据过滤,where不能过滤聚合函数)hive> select count(*),age from tea where id>18 group by age;//having是先分组在限定条件(对每个组进行过滤,having后只能跟select中已有的列)hive> select age,count(*) c from tea group by age having c>2;//where和having一起使用select id,count(*) from tea where id>18 group by id having count(*)>2;

5.group by

//group by后面没有的列,select后面也绝不能有(聚合函数除外)hive> select ip,sum(load) as c from logs  group by ip sort by c desc limit 5;

6.distinct

//distinct关键字返回唯一不同的值(返回age和id均不相同的记录)hive> select distinct age,id from tea;

7.hive只支持Union All,不支持Union

//hive的Union All相对sql有所不同,要求列的数量相同,并且对应的列名也相同,但不要求类的类型相同(可能是存在隐式转换吧)select name,age from tea where id<80 union all select name,age from stu where age>18; 

转载于:https://www.cnblogs.com/skyl/p/4736861.html

你可能感兴趣的文章
函数对象、函数对象嵌套调用、函数定义、名称空间与作用域以及名称空间的查找顺序...
查看>>
WCF宿主asp.netMVC 并且发布restfull接口数据
查看>>
bzoj2823: [AHOI2012]信号塔&&1336: [Balkan2002]Alien最小圆覆盖&&1337: 最小圆覆盖
查看>>
四则运算随机生成器
查看>>
deeplenrnig学习笔记——什么是特征
查看>>
Java入门系列-23-NIO(使用缓冲区和通道对文件操作)
查看>>
来自java文档 HashMap类
查看>>
Java中的内部类(一)静态内部类
查看>>
failed to load the jni shared library jvm
查看>>
Javascript编码风格
查看>>
django
查看>>
ASP.NET MVC 3 新特性
查看>>
vue报错信息
查看>>
布林带
查看>>
数据平滑
查看>>
奇异值分解
查看>>
快速傅里叶变换模块(fft)
查看>>
随机数模块(random)
查看>>
杂项功能(排序/插值/图像/金融相关)
查看>>
pandas核心
查看>>