otl_stream查询返回数据_Hive查询18种方式

eb69240cde30ce919662a48bebc7757d.png

前言

大家一定对Hive不陌生吧!Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能(HQL)。Hive的优点是学习成本低,可以通过类似SQL语句实现快速MapReduce统计,使MapReduce变得更加简单,而不必开发专门的MapReduce应用程序。因此,hive十分适合对数据仓库进行统计分析。

本期内容,我们就来探讨一下,关于Hive数据查询的18种方法!

35edb0d68407f0c756f5b3e0df866cc6.png


准备

        我们本期内容大部分HQL操作都需要依赖如下两张表,具体的数据内容如下:

course05f7f715ce3baef31391bba70dbfaec3.png

student13122e75e3217e8d0bd2d58079740ef6.png

1、SELECT查询语句

        SELECT 查询语句比较简单,后面跟要查询的字段,如下所示:

hive (hypers)> select name from student;
OK
name
Rose
Jack
Jimmy
Tom
Jerry

        可以为查询语句中的列和表加上别名,如下所示:

hive (hypers)> select t.name from student t;
OK
t.name
Rose
Jack
Jimmy
Tom
Jerry

        可以使用如下语句进行嵌套查询:

hive (hypers)> select a.name, b.coursename
             > from (select stuid, name from student) a
             >          join (select stuid, coursename from course) b on a.stuid = b.stuid;

OK
a.name  b.coursename
Rose    C语言
Jack    Java
Jimmy   高等数学
Tom     离散数学
Jerry   C++

        可以使用正则表达式指定查询的列,如下所示:

hive (hypers)> select t.* from student t;
OK
t.stuid t.name  t.sex   t.age
15317408        Rose    1       21
15317412        Jack    0       20
15317432        Jimmy   1       21
15317423        Tom     1       20
15317478        Jerry   0       19
15317467        Alice   0       20

        可以使用 LIMIT 限制查询的结果条数,如下所示:

hive (hypers)> select * from student limit 1;
OK
student.stuid   student.name    student.sex     student.age
15317408        Rose    1       21

        可以使用ORDER BY语句对结果进行排序,升序我们可以不在排序的字段后加上ASC(默认),但是倒序需要指定DESC,如下所示:

hive (hypers)> select * from student order by age desc;
OK
student.stuid   student.name    student.sex     student.age
15317432        Jimmy   1       21
15317408        Rose    1       21
15317467        Alice   0       20
15317423        Tom     1       20
15317412        Jack    0       20
15317478        Jerry   0       19
Time taken: 10.631 seconds, Fetched: 5 row(s)

hive (hypers)> select * from student order by age;
OK
student.stuid   student.name    student.sex     student.age
15317478        Jerry   0       19
15317467        Alice   0       20
15317423        Tom     1       20
15317412        Jack    0       20
15317432        Jimmy   1       21
15317408        Rose    1       21

        我们还可以使用CASE...WHEN...THEN语句对某一列的值进行处理,如下所示:

hive (hypers)> SELECT stuid,
             >        name,
             >        age,
             >        sex,
             >        CASE
             >            WHEN sex = '1' THEN '男'
             >            WHEN sex = '0' THEN '女'
             >            ELSE '未知'
             >            END
             >        FROM student;
OK
stuid   name    age     sex     _c4
15317408        Rose    21      1       男
15317412        Jack    20      0       女
15317432        Jimmy   21      1       男
153
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值