Hive学习笔记(4)—— hive练习

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012292754/article/details/82348433

1 数据

1.1 students.txt

Sno,Sname,sex,Sage,Sdept
95001,李勇,男,20,CS
95002,刘晨,女,19,IS
95003,王敏,女,22,MA
95004,张立,男,19,IS
95005,刘刚,男,18,MA
95006,孙庆,男,23,CS
95007,易思玲,女,19,MA
95008,李娜,女,18,CS
95009,梦圆圆,女,18,MA
95010,孔小涛,男,19,CS
95011,包小柏,男,18,MA
95012,孙花,女,20,CS
95013,冯伟,男,21,CS
95014,王小丽,女,19,CS
95015,王君,男,18,MA
95016,钱国,男,21,MA
95017,王风娟,女,18,IS
95018,王一,女,19,IS
95019,邢小丽,女,19,IS
95020,赵钱,男,21,IS
95021,周二,男,17,MA
95022,郑明,男,20,MA

1.2 sx.txt

Sno,Cno,Grade
95001,1,81
95001,2,85
95001,3,88
95001,4,70
95002,2,90
95002,3,80
95002,4,71
95002,5,60
95003,1,82
95003,3,90
95003,5,100
95004,1,80
95004,2,92
95004,4,91
95004,5,70
95005,1,70
95005,2,92
95005,3,99
95005,6,87
95006,1,72
95006,2,62
95006,3,100
95006,4,59
95006,5,60
95006,6,98
95007,3,68
95007,4,91
95007,5,94
95007,6,78
95008,1,98
95008,3,89
95008,6,91
95009,2,81
95009,4,89
95009,6,100
95010,2,98
95010,5,90
95010,6,80
95011,1,81
95011,2,91
95011,3,81
95011,4,86
95012,1,81
95012,3,78
95012,4,85
95012,6,98
95013,1,98
95013,2,58
95013,4,88
95013,5,93
95014,1,91
95014,2,100
95014,4,98
95015,1,91
95015,3,59
95015,4,100
95015,6,95
95016,1,92
95016,2,99
95016,4,82
95017,4,82
95017,5,100
95017,6,58
95018,1,95
95018,2,100
95018,3,67
95018,4,78
95019,1,77
95019,2,90
95019,3,91
95019,4,67
95019,5,87
95020,1,66
95020,2,99
95020,5,93
95021,2,93
95021,5,91
95021,6,99
95022,3,69
95022,4,93
95022,5,82
95022,6,100

1.3 course.txt

Cno,Cname
1,数据库
2,数学
3,信息系统
4,操作系统
5,数据结构
6,数据处理

2 建表

这里写图片描述

2.1 新建student

create table student(Sno int,Sname string,Sex string,Sage int,Sdept string)row format delimited fields terminated by ','stored as textfile;

load data local inpath '/home/hadoop/students.txt' overwrite into table student;
这里写图片描述
这里写图片描述

2.2 新建course

create table course(Cno int,Cname string) row format delimited fields terminated by ',' stored as textfile;

load data local inpath '/home/hadoop/course.txt' overwrite into table course;

这里写图片描述

2.3 新建sc

create table sc(Sno int,Cno int,Grade int)row format delimited fields terminated by ',' stored as textfile;

load data local inpath '/home/hadoop/sc.txt' overwrite into table sc;
这里写图片描述

3 练习

  • 查询全体学生的学号与姓名
    select Sno,Sname from student;
    这里写图片描述
  • 查询选修了课程的学生姓名
    select distinct Sname from student inner join sc on student.Sno=Sc.Sno;
0: jdbc:hive2://localhost:10000> select distinct Sname from student inner join sc on student.Sno=Sc.Sno;
WARNING: Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
2018-09-04 09:35:10 Starting to launch local task to process map join;  maximum memory = 518979584
2018-09-04 09:35:12 Dump the side-table for tag: 0 with group count: 22 into file: file:/home/hadoop/apps/hive/tmp/hadoop/1f127f2f-1532-4125-9a38-9bc7375cc03d/hive_2018-09-04_09-35-03_222_1015621569416205706-1/-local-10005/HashTable-Stage-2/MapJoin-mapfile00--.hashtable
2018-09-04 09:35:12 Uploaded 1 File to: file:/home/hadoop/apps/hive/tmp/hadoop/1f127f2f-1532-4125-9a38-9bc7375cc03d/hive_2018-09-04_09-35-03_222_1015621569416205706-1/-local-10005/HashTable-Stage-2/MapJoin-mapfile00--.hashtable (922 bytes)
2018-09-04 09:35:12 End of local task; Time Taken: 2.041 sec.
+--------+
| sname  |
+--------+
| 冯伟     |
| 刘刚     |
| 刘晨     |
| 包小柏    |
| 周二     |
| 孔小涛    |
| 孙庆     |
| 孙花     |
| 张立     |
| 易思玲    |
| 李勇     |
| 李娜     |
| 梦圆圆    |
| 王一     |
| 王君     |
| 王小丽    |
| 王敏     |
| 王风娟    |
| 赵钱     |
| 邢小丽    |
| 郑明     |
| 钱国     |
+--------+
22 rows selected (45.979 seconds)
  • 查询学生的总人数
    select count(distinct Sno)count from student;
    这里写图片描述

  • 计算1号课程的学生平均成绩
    select avg(distinct Grade) from sc where Cno=1;
    这里写图片描述

  • 查询各科成绩平均分
    select Cno,avg(Grade) from sc group by Cno;
    这里写图片描述

  • 查询选修1号课程的学生最高分数
    select Grade from sc where Cno=1 sort by Grade desc limit 1;
    这里写图片描述

对比 select * from sc where Cno=1 sort by Grade;
这里写图片描述

对比 select Grade from sc where Cno=1 order by Grade;
这里写图片描述

  • 求各个课程号及相应的选课人数
    select Cno,count(1) from sc group by Cno;
    这里写图片描述

  • 查询选修了3门以上的课程的学生学号
    select Sno from (select Sno,count(Cno) CountCno from sc group by Sno)a where a.CountCno>3;
    这里写图片描述

select Sno from sc group by Sno having count(Cno)>3;
这里写图片描述

----hive的Order By/Sort By/Distribute By
 Order By ,在strict 模式下(hive.mapred.mode=strict),order by 语句必须跟着limit语句,
但是在nonstrict下就不是必须的,
如果最后输出的行数过多,一个reduce需要花费很长的时间。
  • 查询学生信息,结果按学号全局有序
    set hive.mapred.mode=strict; <默认nonstrict>
    select Sno from student order by Sno;
    这里写图片描述
0: jdbc:hive2://localhost:10000> select Sno from student order by (Sno);
WARNING: Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
+--------+
|  sno   |
+--------+
| 95001  |
| 95002  |
| 95003  |
| 95004  |
| 95005  |
| 95006  |
| 95007  |
| 95008  |
| 95009  |
| 95010  |
| 95011  |
| 95012  |
| 95013  |
| 95014  |
| 95015  |
| 95016  |
| 95017  |
| 95018  |
| 95019  |
| 95020  |
| 95021  |
| 95022  |
+--------+
22 rows selected (21.424 seconds)
 Sort By,它通常发生在每一个redcue里,“order by” 和“sort by"的区别在于,
前者能给保证输出都是有顺序的,而后者如果有多个reduce的时候只是保证了输出的部分有序。
set mapred.reduce.tasks=<number>在sort by可以指定,
在用sort by的时候,如果没有指定列,它会随机的分配到不同的reduce里去。
distribute by 按照指定的字段对数据进行划分到不同的输出reduce中 
  此方法会根据性别划分到不同的reduce中 ,然后按年龄排序并输出到不同的文件中。
  • 查询学生信息,按性别分区,在分区内按年龄有序
    set mapred.reduce.tasks=2;
    insert overwrite local directory '/home/hadoop/out'
    select * from student distribute by Sex sort by Sage;
    这里写图片描述

  • 查询每个学生及其选修课程的情况
    select student.*,sc.* from student join sc on (student.Sno =sc.Sno);

0: jdbc:hive2://localhost:10000> select student.*,sc.* from student join sc on (student.Sno =sc.Sno);
WARNING: Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
2018-09-04 10:31:17 Starting to launch local task to process map join;  maximum memory = 518979584
2018-09-04 10:31:19 Dump the side-table for tag: 0 with group count: 22 into file: file:/home/hadoop/apps/hive/tmp/hadoop/1f127f2f-1532-4125-9a38-9bc7375cc03d/hive_2018-09-04_10-31-10_136_1027007344392192405-1/-local-10004/HashTable-Stage-3/MapJoin-mapfile10--.hashtable
2018-09-04 10:31:19 Uploaded 1 File to: file:/home/hadoop/apps/hive/tmp/hadoop/1f127f2f-1532-4125-9a38-9bc7375cc03d/hive_2018-09-04_10-31-10_136_1027007344392192405-1/-local-10004/HashTable-Stage-3/MapJoin-mapfile10--.hashtable (1098 bytes)
2018-09-04 10:31:19 End of local task; Time Taken: 1.984 sec.
+--------------+----------------+--------------+---------------+----------------+---------+---------+-----------+
| student.sno  | student.sname  | student.sex  | student.sage  | student.sdept  | sc.sno  | sc.cno  | sc.grade  |
+--------------+----------------+--------------+---------------+----------------+---------+---------+-----------+
| 95001        | 李勇             | 男            | 20            | CS             | 95001   | 1       | 81        |
| 95001        | 李勇             | 男            | 20            | CS             | 95001   | 2       | 85        |
| 95001        | 李勇             | 男            | 20            | CS             | 95001   | 3       | 88        |
| 95001        | 李勇             | 男            | 20            | CS             | 95001   | 4       | 70        |
| 95002        | 刘晨             | 女            | 19            | IS             | 95002   | 2       | 90        |
| 95002        | 刘晨             | 女            | 19            | IS             | 95002   | 3       | 80        |
| 95002        | 刘晨             | 女            | 19            | IS             | 95002   | 4       | 71        |
| 95002        | 刘晨             | 女            | 19            | IS             | 95002   | 5       | 60        |
| 95003        | 王敏             | 女            | 22            | MA             | 95003   | 1       | 82        |
| 95003        | 王敏             | 女            | 22            | MA             | 95003   | 3       | 90        |
| 95003        | 王敏             | 女            | 22            | MA             | 95003   | 5       | 100       |
| 95004        | 张立             | 男            | 19            | IS             | 95004   | 1       | 80        |
| 95004        | 张立             | 男            | 19            | IS             | 95004   | 2       | 92        |
| 95004        | 张立             | 男            | 19            | IS             | 95004   | 4       | 91        |
| 95004        | 张立             | 男            | 19            | IS             | 95004   | 5       | 70        |
| 95005        | 刘刚             | 男            | 18            | MA             | 95005   | 1       | 70        |
| 95005        | 刘刚             | 男            | 18            | MA             | 95005   | 2       | 92        |
| 95005        | 刘刚             | 男            | 18            | MA             | 95005   | 3       | 99        |
| 95005        | 刘刚             | 男            | 18            | MA             | 95005   | 6       | 87        |
| 95006        | 孙庆             | 男            | 23            | CS             | 95006   | 1       | 72        |
| 95006        | 孙庆             | 男            | 23            | CS             | 95006   | 2       | 62        |
| 95006        | 孙庆             | 男            | 23            | CS             | 95006   | 3       | 100       |
| 95006        | 孙庆             | 男            | 23            | CS             | 95006   | 4       | 59        |
| 95006        | 孙庆             | 男            | 23            | CS             | 95006   | 5       | 60        |
| 95006        | 孙庆             | 男            | 23            | CS             | 95006   | 6       | 98        |
| 95007        | 易思玲            | 女            | 19            | MA             | 95007   | 3       | 68        |
| 95007        | 易思玲            | 女            | 19            | MA             | 95007   | 4       | 91        |
| 95007        | 易思玲            | 女            | 19            | MA             | 95007   | 5       | 94        |
| 95007        | 易思玲            | 女            | 19            | MA             | 95007   | 6       | 78        |
| 95008        | 李娜             | 女            | 18            | CS             | 95008   | 1       | 98        |
| 95008        | 李娜             | 女            | 18            | CS             | 95008   | 3       | 89        |
| 95008        | 李娜             | 女            | 18            | CS             | 95008   | 6       | 91        |
| 95009        | 梦圆圆            | 女            | 18            | MA             | 95009   | 2       | 81        |
| 95009        | 梦圆圆            | 女            | 18            | MA             | 95009   | 4       | 89        |
| 95009        | 梦圆圆            | 女            | 18            | MA             | 95009   | 6       | 100       |
| 95010        | 孔小涛            | 男            | 19            | CS             | 95010   | 2       | 98        |
| 95010        | 孔小涛            | 男            | 19            | CS             | 95010   | 5       | 90        |
| 95010        | 孔小涛            | 男            | 19            | CS             | 95010   | 6       | 80        |
| 95011        | 包小柏            | 男            | 18            | MA             | 95011   | 1       | 81        |
| 95011        | 包小柏            | 男            | 18            | MA             | 95011   | 2       | 91        |
| 95011        | 包小柏            | 男            | 18            | MA             | 95011   | 3       | 81        |
| 95011        | 包小柏            | 男            | 18            | MA             | 95011   | 4       | 86        |
| 95012        | 孙花             | 女            | 20            | CS             | 95012   | 1       | 81        |
| 95012        | 孙花             | 女            | 20            | CS             | 95012   | 3       | 78        |
| 95012        | 孙花             | 女            | 20            | CS             | 95012   | 4       | 85        |
| 95012        | 孙花             | 女            | 20            | CS             | 95012   | 6       | 98        |
| 95013        | 冯伟             | 男            | 21            | CS             | 95013   | 1       | 98        |
| 95013        | 冯伟             | 男            | 21            | CS             | 95013   | 2       | 58        |
| 95013        | 冯伟             | 男            | 21            | CS             | 95013   | 4       | 88        |
| 95013        | 冯伟             | 男            | 21            | CS             | 95013   | 5       | 93        |
| 95014        | 王小丽            | 女            | 19            | CS             | 95014   | 1       | 91        |
| 95014        | 王小丽            | 女            | 19            | CS             | 95014   | 2       | 100       |
| 95014        | 王小丽            | 女            | 19            | CS             | 95014   | 4       | 98        |
| 95015        | 王君             | 男            | 18            | MA             | 95015   | 1       | 91        |
| 95015        | 王君             | 男            | 18            | MA             | 95015   | 3       | 59        |
| 95015        | 王君             | 男            | 18            | MA             | 95015   | 4       | 100       |
| 95015        | 王君             | 男            | 18            | MA             | 95015   | 6       | 95        |
| 95016        | 钱国             | 男            | 21            | MA             | 95016   | 1       | 92        |
| 95016        | 钱国             | 男            | 21            | MA             | 95016   | 2       | 99        |
| 95016        | 钱国             | 男            | 21            | MA             | 95016   | 4       | 82        |
| 95017        | 王风娟            | 女            | 18            | IS             | 95017   | 4       | 82        |
| 95017        | 王风娟            | 女            | 18            | IS             | 95017   | 5       | 100       |
| 95017        | 王风娟            | 女            | 18            | IS             | 95017   | 6       | 58        |
| 95018        | 王一             | 女            | 19            | IS             | 95018   | 1       | 95        |
| 95018        | 王一             | 女            | 19            | IS             | 95018   | 2       | 100       |
| 95018        | 王一             | 女            | 19            | IS             | 95018   | 3       | 67        |
| 95018        | 王一             | 女            | 19            | IS             | 95018   | 4       | 78        |
| 95019        | 邢小丽            | 女            | 19            | IS             | 95019   | 1       | 77        |
| 95019        | 邢小丽            | 女            | 19            | IS             | 95019   | 2       | 90        |
| 95019        | 邢小丽            | 女            | 19            | IS             | 95019   | 3       | 91        |
| 95019        | 邢小丽            | 女            | 19            | IS             | 95019   | 4       | 67        |
| 95019        | 邢小丽            | 女            | 19            | IS             | 95019   | 5       | 87        |
| 95020        | 赵钱             | 男            | 21            | IS             | 95020   | 1       | 66        |
| 95020        | 赵钱             | 男            | 21            | IS             | 95020   | 2       | 99        |
| 95020        | 赵钱             | 男            | 21            | IS             | 95020   | 5       | 93        |
| 95021        | 周二             | 男            | 17            | MA             | 95021   | 2       | 93        |
| 95021        | 周二             | 男            | 17            | MA             | 95021   | 5       | 91        |
| 95021        | 周二             | 男            | 17            | MA             | 95021   | 6       | 99        |
| 95022        | 郑明             | 男            | 20            | MA             | 95022   | 3       | 69        |
| 95022        | 郑明             | 男            | 20            | MA             | 95022   | 4       | 93        |
| 95022        | 郑明             | 男            | 20            | MA             | 95022   | 5       | 82        |
| 95022        | 郑明             | 男            | 20            | MA             | 95022   | 6       | 100       |
+--------------+----------------+--------------+---------------+----------------+---------+---------+-----------+
82 rows selected (26.623 seconds)
  • 查询学生的得分情况
    select student.Sname,course.Cname,sc.Grade from student join sc on student.Sno=sc.Sno join course on sc.cno=course.cno;
0: jdbc:hive2://localhost:10000> select student.Sname,course.Cname,sc.Grade from student join sc on student.Sno=sc.Sno join course on sc.cno=course.cno;
WARNING: Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
2018-09-04 10:32:41 Starting to launch local task to process map join;  maximum memory = 518979584
2018-09-04 10:32:43 Dump the side-table for tag: 1 with group count: 6 into file: file:/home/hadoop/apps/hive/tmp/hadoop/1f127f2f-1532-4125-9a38-9bc7375cc03d/hive_2018-09-04_10-32-34_655_6614164238152758910-1/-local-10005/HashTable-Stage-5/MapJoin-mapfile21--.hashtable
2018-09-04 10:32:43 Uploaded 1 File to: file:/home/hadoop/apps/hive/tmp/hadoop/1f127f2f-1532-4125-9a38-9bc7375cc03d/hive_2018-09-04_10-32-34_655_6614164238152758910-1/-local-10005/HashTable-Stage-5/MapJoin-mapfile21--.hashtable (443 bytes)
2018-09-04 10:32:43 Dump the side-table for tag: 0 with group count: 22 into file: file:/home/hadoop/apps/hive/tmp/hadoop/1f127f2f-1532-4125-9a38-9bc7375cc03d/hive_2018-09-04_10-32-34_655_6614164238152758910-1/-local-10005/HashTable-Stage-5/MapJoin-mapfile30--.hashtable
2018-09-04 10:32:43 Uploaded 1 File to: file:/home/hadoop/apps/hive/tmp/hadoop/1f127f2f-1532-4125-9a38-9bc7375cc03d/hive_2018-09-04_10-32-34_655_6614164238152758910-1/-local-10005/HashTable-Stage-5/MapJoin-mapfile30--.hashtable (922 bytes)
2018-09-04 10:32:43 End of local task; Time Taken: 2.006 sec.
+----------------+---------------+-----------+
| student.sname  | course.cname  | sc.grade  |
+----------------+---------------+-----------+
| 李勇             | 数据库           | 81        |
| 李勇             | 数学            | 85        |
| 李勇             | 信息系统          | 88        |
| 李勇             | 操作系统          | 70        |
| 刘晨             | 数学            | 90        |
| 刘晨             | 信息系统          | 80        |
| 刘晨             | 操作系统          | 71        |
| 刘晨             | 数据结构          | 60        |
| 王敏             | 数据库           | 82        |
| 王敏             | 信息系统          | 90        |
| 王敏             | 数据结构          | 100       |
| 张立             | 数据库           | 80        |
| 张立             | 数学            | 92        |
| 张立             | 操作系统          | 91        |
| 张立             | 数据结构          | 70        |
| 刘刚             | 数据库           | 70        |
| 刘刚             | 数学            | 92        |
| 刘刚             | 信息系统          | 99        |
| 刘刚             | 数据处理          | 87        |
| 孙庆             | 数据库           | 72        |
| 孙庆             | 数学            | 62        |
| 孙庆             | 信息系统          | 100       |
| 孙庆             | 操作系统          | 59        |
| 孙庆             | 数据结构          | 60        |
| 孙庆             | 数据处理          | 98        |
| 易思玲            | 信息系统          | 68        |
| 易思玲            | 操作系统          | 91        |
| 易思玲            | 数据结构          | 94        |
| 易思玲            | 数据处理          | 78        |
| 李娜             | 数据库           | 98        |
| 李娜             | 信息系统          | 89        |
| 李娜             | 数据处理          | 91        |
| 梦圆圆            | 数学            | 81        |
| 梦圆圆            | 操作系统          | 89        |
| 梦圆圆            | 数据处理          | 100       |
| 孔小涛            | 数学            | 98        |
| 孔小涛            | 数据结构          | 90        |
| 孔小涛            | 数据处理          | 80        |
| 包小柏            | 数据库           | 81        |
| 包小柏            | 数学            | 91        |
| 包小柏            | 信息系统          | 81        |
| 包小柏            | 操作系统          | 86        |
| 孙花             | 数据库           | 81        |
| 孙花             | 信息系统          | 78        |
| 孙花             | 操作系统          | 85        |
| 孙花             | 数据处理          | 98        |
| 冯伟             | 数据库           | 98        |
| 冯伟             | 数学            | 58        |
| 冯伟             | 操作系统          | 88        |
| 冯伟             | 数据结构          | 93        |
| 王小丽            | 数据库           | 91        |
| 王小丽            | 数学            | 100       |
| 王小丽            | 操作系统          | 98        |
| 王君             | 数据库           | 91        |
| 王君             | 信息系统          | 59        |
| 王君             | 操作系统          | 100       |
| 王君             | 数据处理          | 95        |
| 钱国             | 数据库           | 92        |
| 钱国             | 数学            | 99        |
| 钱国             | 操作系统          | 82        |
| 王风娟            | 操作系统          | 82        |
| 王风娟            | 数据结构          | 100       |
| 王风娟            | 数据处理          | 58        |
| 王一             | 数据库           | 95        |
| 王一             | 数学            | 100       |
| 王一             | 信息系统          | 67        |
| 王一             | 操作系统          | 78        |
| 邢小丽            | 数据库           | 77        |
| 邢小丽            | 数学            | 90        |
| 邢小丽            | 信息系统          | 91        |
| 邢小丽            | 操作系统          | 67        |
| 邢小丽            | 数据结构          | 87        |
| 赵钱             | 数据库           | 66        |
| 赵钱             | 数学            | 99        |
| 赵钱             | 数据结构          | 93        |
| 周二             | 数学            | 93        |
| 周二             | 数据结构          | 91        |
| 周二             | 数据处理          | 99        |
| 郑明             | 信息系统          | 69        |
| 郑明             | 操作系统          | 93        |
| 郑明             | 数据结构          | 82        |
| 郑明             | 数据处理          | 100       |
+----------------+---------------+-----------+
82 rows selected (25.284 seconds)
  • 查询选修2号课程且成绩在90分以上的所有学生
    select student.Sname,sc.Grade from student join sc on student.Sno=sc.Sno where sc.Cno=2 and sc.Grade>90;
    这里写图片描述

  • 查询所有学生的信息,如果在成绩表中有成绩,则输出成绩表中的课程号
    select student.Sname,sc.Cno from student left outer join sc on student.Sno=sc.Sno;

0: jdbc:hive2://localhost:10000> select student.Sname,sc.Cno from student left outer join sc on student.Sno=sc.Sno;
WARNING: Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
2018-09-04 10:36:48 Starting to launch local task to process map join;  maximum memory = 518979584
2018-09-04 10:36:49 Dump the side-table for tag: 1 with group count: 22 into file: file:/home/hadoop/apps/hive/tmp/hadoop/1f127f2f-1532-4125-9a38-9bc7375cc03d/hive_2018-09-04_10-36-41_653_4538277128535547394-1/-local-10004/HashTable-Stage-3/MapJoin-mapfile51--.hashtable
2018-09-04 10:36:50 Uploaded 1 File to: file:/home/hadoop/apps/hive/tmp/hadoop/1f127f2f-1532-4125-9a38-9bc7375cc03d/hive_2018-09-04_10-36-41_653_4538277128535547394-1/-local-10004/HashTable-Stage-3/MapJoin-mapfile51--.hashtable (1129 bytes)
2018-09-04 10:36:50 End of local task; Time Taken: 1.986 sec.
+----------------+---------+
| student.sname  | sc.cno  |
+----------------+---------+
| 李勇             | 1       |
| 李勇             | 2       |
| 李勇             | 3       |
| 李勇             | 4       |
| 刘晨             | 2       |
| 刘晨             | 3       |
| 刘晨             | 4       |
| 刘晨             | 5       |
| 王敏             | 1       |
| 王敏             | 3       |
| 王敏             | 5       |
| 张立             | 1       |
| 张立             | 2       |
| 张立             | 4       |
| 张立             | 5       |
| 刘刚             | 1       |
| 刘刚             | 2       |
| 刘刚             | 3       |
| 刘刚             | 6       |
| 孙庆             | 1       |
| 孙庆             | 2       |
| 孙庆             | 3       |
| 孙庆             | 4       |
| 孙庆             | 5       |
| 孙庆             | 6       |
| 易思玲            | 3       |
| 易思玲            | 4       |
| 易思玲            | 5       |
| 易思玲            | 6       |
| 李娜             | 1       |
| 李娜             | 3       |
| 李娜             | 6       |
| 梦圆圆            | 2       |
| 梦圆圆            | 4       |
| 梦圆圆            | 6       |
| 孔小涛            | 2       |
| 孔小涛            | 5       |
| 孔小涛            | 6       |
| 包小柏            | 1       |
| 包小柏            | 2       |
| 包小柏            | 3       |
| 包小柏            | 4       |
| 孙花             | 1       |
| 孙花             | 3       |
| 孙花             | 4       |
| 孙花             | 6       |
| 冯伟             | 1       |
| 冯伟             | 2       |
| 冯伟             | 4       |
| 冯伟             | 5       |
| 王小丽            | 1       |
| 王小丽            | 2       |
| 王小丽            | 4       |
| 王君             | 1       |
| 王君             | 3       |
| 王君             | 4       |
| 王君             | 6       |
| 钱国             | 1       |
| 钱国             | 2       |
| 钱国             | 4       |
| 王风娟            | 4       |
| 王风娟            | 5       |
| 王风娟            | 6       |
| 王一             | 1       |
| 王一             | 2       |
| 王一             | 3       |
| 王一             | 4       |
| 邢小丽            | 1       |
| 邢小丽            | 2       |
| 邢小丽            | 3       |
| 邢小丽            | 4       |
| 邢小丽            | 5       |
| 赵钱             | 1       |
| 赵钱             | 2       |
| 赵钱             | 5       |
| 周二             | 2       |
| 周二             | 5       |
| 周二             | 6       |
| 郑明             | 3       |
| 郑明             | 4       |
| 郑明             | 5       |
| 郑明             | 6       |
+----------------+---------+
82 rows selected (24.031 seconds)
  • 查询与“刘晨”在同一个系学习的学生
    select s1.Sname from student s1 left semi join student s2 on s1.Sdept=s2.Sdept and s2.Sname='刘晨';
    这里写图片描述

比较: select * from student s1 left join student s2 on s1.Sdept=s2.Sdept and s2.Sname='刘晨';

0: jdbc:hive2://localhost:10000> select * from student s1 left join student s2 on s1.Sdept=s2.Sdept and s2.Sname='刘晨';
WARNING: Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
2018-09-04 11:31:02 Starting to launch local task to process map join;  maximum memory = 518979584
2018-09-04 11:31:03 Dump the side-table for tag: 1 with group count: 1 into file: file:/home/hadoop/apps/hive/tmp/hadoop/1f127f2f-1532-4125-9a38-9bc7375cc03d/hive_2018-09-04_11-30-56_160_289954978189883635-1/-local-10004/HashTable-Stage-3/MapJoin-mapfile111--.hashtable
2018-09-04 11:31:04 Uploaded 1 File to: file:/home/hadoop/apps/hive/tmp/hadoop/1f127f2f-1532-4125-9a38-9bc7375cc03d/hive_2018-09-04_11-30-56_160_289954978189883635-1/-local-10004/HashTable-Stage-3/MapJoin-mapfile111--.hashtable (297 bytes)
2018-09-04 11:31:04 End of local task; Time Taken: 2.086 sec.
+---------+-----------+---------+----------+-----------+---------+-----------+---------+----------+-----------+
| s1.sno  | s1.sname  | s1.sex  | s1.sage  | s1.sdept  | s2.sno  | s2.sname  | s2.sex  | s2.sage  | s2.sdept  |
+---------+-----------+---------+----------+-----------+---------+-----------+---------+----------+-----------+
| 95001   | 李勇        | 男       | 20       | CS        | NULL    | NULL      | NULL    | NULL     | NULL      |
| 95002   | 刘晨        | 女       | 19       | IS        | 95002   | 刘晨        | 女       | 19       | IS        |
| 95003   | 王敏        | 女       | 22       | MA        | NULL    | NULL      | NULL    | NULL     | NULL      |
| 95004   | 张立        | 男       | 19       | IS        | 95002   | 刘晨        | 女       | 19       | IS        |
| 95005   | 刘刚        | 男       | 18       | MA        | NULL    | NULL      | NULL    | NULL     | NULL      |
| 95006   | 孙庆        | 男       | 23       | CS        | NULL    | NULL      | NULL    | NULL     | NULL      |
| 95007   | 易思玲       | 女       | 19       | MA        | NULL    | NULL      | NULL    | NULL     | NULL      |
| 95008   | 李娜        | 女       | 18       | CS        | NULL    | NULL      | NULL    | NULL     | NULL      |
| 95009   | 梦圆圆       | 女       | 18       | MA        | NULL    | NULL      | NULL    | NULL     | NULL      |
| 95010   | 孔小涛       | 男       | 19       | CS        | NULL    | NULL      | NULL    | NULL     | NULL      |
| 95011   | 包小柏       | 男       | 18       | MA        | NULL    | NULL      | NULL    | NULL     | NULL      |
| 95012   | 孙花        | 女       | 20       | CS        | NULL    | NULL      | NULL    | NULL     | NULL      |
| 95013   | 冯伟        | 男       | 21       | CS        | NULL    | NULL      | NULL    | NULL     | NULL      |
| 95014   | 王小丽       | 女       | 19       | CS        | NULL    | NULL      | NULL    | NULL     | NULL      |
| 95015   | 王君        | 男       | 18       | MA        | NULL    | NULL      | NULL    | NULL     | NULL      |
| 95016   | 钱国        | 男       | 21       | MA        | NULL    | NULL      | NULL    | NULL     | NULL      |
| 95017   | 王风娟       | 女       | 18       | IS        | 95002   | 刘晨        | 女       | 19       | IS        |
| 95018   | 王一        | 女       | 19       | IS        | 95002   | 刘晨        | 女       | 19       | IS        |
| 95019   | 邢小丽       | 女       | 19       | IS        | 95002   | 刘晨        | 女       | 19       | IS        |
| 95020   | 赵钱        | 男       | 21       | IS        | 95002   | 刘晨        | 女       | 19       | IS        |
| 95021   | 周二        | 男       | 17       | MA        | NULL    | NULL      | NULL    | NULL     | NULL      |
| 95022   | 郑明        | 男       | 20       | MA        | NULL    | NULL      | NULL    | NULL     | NULL      |
+---------+-----------+---------+----------+-----------+---------+-----------+---------+----------+-----------+
22 rows selected (23.646 seconds)

比较: select * from student s1 right join student s2 on s1.Sdept=s2.Sdept and s2.Sname='刘晨';

0: jdbc:hive2://localhost:10000> select * from student s1 right join student s2 on s1.Sdept=s2.Sdept and s2.Sname='刘晨';
WARNING: Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
2018-09-04 11:58:40 Starting to launch local task to process map join;  maximum memory = 518979584
2018-09-04 11:58:42 Dump the side-table for tag: 0 with group count: 3 into file: file:/home/hadoop/apps/hive/tmp/hadoop/66ac9ec4-c5d9-4c9c-ad58-da22ddfa343b/hive_2018-09-04_11-58-31_164_6503636598284731200-1/-local-10004/HashTable-Stage-3/MapJoin-mapfile00--.hashtable
2018-09-04 11:58:42 Uploaded 1 File to: file:/home/hadoop/apps/hive/tmp/hadoop/66ac9ec4-c5d9-4c9c-ad58-da22ddfa343b/hive_2018-09-04_11-58-31_164_6503636598284731200-1/-local-10004/HashTable-Stage-3/MapJoin-mapfile00--.hashtable (794 bytes)
2018-09-04 11:58:42 End of local task; Time Taken: 2.001 sec.
+---------+-----------+---------+----------+-----------+---------+-----------+---------+----------+-----------+
| s1.sno  | s1.sname  | s1.sex  | s1.sage  | s1.sdept  | s2.sno  | s2.sname  | s2.sex  | s2.sage  | s2.sdept  |
+---------+-----------+---------+----------+-----------+---------+-----------+---------+----------+-----------+
| NULL    | NULL      | NULL    | NULL     | NULL      | 95001   | 李勇        | 男       | 20       | CS        |
| 95002   | 刘晨        | 女       | 19       | IS        | 95002   | 刘晨        | 女       | 19       | IS        |
| 95004   | 张立        | 男       | 19       | IS        | 95002   | 刘晨        | 女       | 19       | IS        |
| 95017   | 王风娟       | 女       | 18       | IS        | 95002   | 刘晨        | 女       | 19       | IS        |
| 95018   | 王一        | 女       | 19       | IS        | 95002   | 刘晨        | 女       | 19       | IS        |
| 95019   | 邢小丽       | 女       | 19       | IS        | 95002   | 刘晨        | 女       | 19       | IS        |
| 95020   | 赵钱        | 男       | 21       | IS        | 95002   | 刘晨        | 女       | 19       | IS        |
| NULL    | NULL      | NULL    | NULL     | NULL      | 95003   | 王敏        | 女       | 22       | MA        |
| NULL    | NULL      | NULL    | NULL     | NULL      | 95004   | 张立        | 男       | 19       | IS        |
| NULL    | NULL      | NULL    | NULL     | NULL      | 95005   | 刘刚        | 男       | 18       | MA        |
| NULL    | NULL      | NULL    | NULL     | NULL      | 95006   | 孙庆        | 男       | 23       | CS        |
| NULL    | NULL      | NULL    | NULL     | NULL      | 95007   | 易思玲       | 女       | 19       | MA        |
| NULL    | NULL      | NULL    | NULL     | NULL      | 95008   | 李娜        | 女       | 18       | CS        |
| NULL    | NULL      | NULL    | NULL     | NULL      | 95009   | 梦圆圆       | 女       | 18       | MA        |
| NULL    | NULL      | NULL    | NULL     | NULL      | 95010   | 孔小涛       | 男       | 19       | CS        |
| NULL    | NULL      | NULL    | NULL     | NULL      | 95011   | 包小柏       | 男       | 18       | MA        |
| NULL    | NULL      | NULL    | NULL     | NULL      | 95012   | 孙花        | 女       | 20       | CS        |
| NULL    | NULL      | NULL    | NULL     | NULL      | 95013   | 冯伟        | 男       | 21       | CS        |
| NULL    | NULL      | NULL    | NULL     | NULL      | 95014   | 王小丽       | 女       | 19       | CS        |
| NULL    | NULL      | NULL    | NULL     | NULL      | 95015   | 王君        | 男       | 18       | MA        |
| NULL    | NULL      | NULL    | NULL     | NULL      | 95016   | 钱国        | 男       | 21       | MA        |
| NULL    | NULL      | NULL    | NULL     | NULL      | 95017   | 王风娟       | 女       | 18       | IS        |
| NULL    | NULL      | NULL    | NULL     | NULL      | 95018   | 王一        | 女       | 19       | IS        |
| NULL    | NULL      | NULL    | NULL     | NULL      | 95019   | 邢小丽       | 女       | 19       | IS        |
| NULL    | NULL      | NULL    | NULL     | NULL      | 95020   | 赵钱        | 男       | 21       | IS        |
| NULL    | NULL      | NULL    | NULL     | NULL      | 95021   | 周二        | 男       | 17       | MA        |
| NULL    | NULL      | NULL    | NULL     | NULL      | 95022   | 郑明        | 男       | 20       | MA        |
+---------+-----------+---------+----------+-----------+---------+-----------+---------+----------+-----------+
27 rows selected (37.805 seconds)

比较: select * from student s1 inner join student s2 on s1.Sdept=s2.Sdept and s2.Sname='刘晨';
这里写图片描述

比较 select * from student s1 left semi join student s2 on s1.Sdept=s2.Sdept and s2.Sname='刘晨';
这里写图片描述

4 查询结果的保存

4.1 方式一 查询结果保存到一张新的hive表中

create table t_tmp
as
select * from t_p;

4.2 方式二 将查询结果保存到一张已经存在的hive表中

insert into  table t_tmp
select * from t_p;

4.3 方式三 将查询结果保存到指定的文件目录(可以是本地,也可以是hdfs)

insert overwrite local directory '/home/hadoop/test'
select * from t_p;

5 LEFT,RIGHT 和 FULL OUTER JOIN ,inner join, left semi join

如果student的sno值对应的sc在中没有值,则会输出student.Sname null.
如果用right out join会保留右边的值,左边的为null。
  Join 发生在WHERE 子句之前。如果你想限制 join 的输出,
  应该在 WHERE 子句中写过滤条件——或是在join 子句中写。

5.1 新建表导入数据

测试数据
a.txt

1,a
2,b
3,c
4,d
7,e
8,f

b.txt

2,aa
3,bb
7,cc
9,ff

这里写图片描述

5.2 inner join - 寻找两张表中都含有共同id的那一行

select * from a inner join b on a.id=b.id;
这里写图片描述

5.3 left join - 把左边表都显示出来,右边表没有的话以Null代替

select * from a left join b on a.id=b.id;
这里写图片描述

5.4 right join - 把右边表都显示出来,左边表没有的话以Null代替

select * from a right join b on a.id=b.id;
这里写图片描述

5.5 full outer join - 两张表都联立的展现出来,空白处以Null代替

select * from a full outer join b on a.id=b.id;
这里写图片描述

5.7 left semi join - 将讲inner join 中的left部分展现出来

select * from a left semi join b on a.id = b.id;
这里写图片描述

重写以下子查询为LEFT SEMI JOIN


  SELECT a.key, a.value
  FROM a
  WHERE a.key exist in
   (SELECT b.key
    FROM B);

可以被重写为:

   SELECT a.key, a.val
   FROM a LEFT SEMI JOIN b on (a.key = b.key)

猜你喜欢

转载自blog.csdn.net/u012292754/article/details/82348433