Hive 初级练习 50 题(完美解答版)

50道HIVE练习题-搞定了这50题hive sql,那可不嘚直接通关起飞!!! 大数据自学之hive通关宝典秘籍 超详细的练习过程,赶紧收藏吧! 》》》》》》》》持续跟新中 现有这样几张表及对应数据,请建好表并插入数据 Student(Sid,Sname,Sage,Ssex)学生表 Sid:学号 Sname:学生姓名 Sbirth:学生生日 Ssex:学生性别 Course(Cid,Cname,T#)课程表 Cid:课程编号 Cname:课程名称 Tid:教师编号 SC(Sid,Cid,score)成绩表 Sid:学号 Cid:课程编号 score:成绩 Teacher(Tid,Tn 阅读详情

Hive 经典练习 50 题(完美解答版)

原始数据

 
data 文件中有 student、course、teacher、score 四张表,表中数据如下:
 

student.csv

s_id,s_name,s_birth,s_sex
1,赵雷,1990-01-01,男
2,钱电,1990-12-21,男
3,孙风,1990-05-20,男
4,李云,1990-08-06,男
5,周梅,1991-12-01,
6,吴兰,1992-03-01,女
7,郑竹,1989-07-01,女
8,王菊,1990-01-20,女

course.csv

c_id,c_name,t_id
1,语文,2
2,数学,1
3,英语,4

teacher.csv

t_id,t_name
1,张三
2,李四
3,王五

score.csv

s_id,c_id,s_score
1,1,80
1,2,90
1,3,99
2,1,70
2,2,60
2,3,180
3,1,80
3,2,80
3,3,80
4,1,50
4,2,30
4,3,-20
5,1,76
5,2,87
6,1,31
6,3,34
7,2,89
7,3,98

 

数据清洗

 
要求:

  1. 将 data 文件中的数据分别导入到 HIVE 中构建 ODS 层的四张外部表
    ext_student\ext_course\ext_teacher\ext_score

  2. 对数据进行清洗生成对应 DWD 层的四张内部表
    (1) student 性别缺失,请将未填充性别的人员设置为女
    (2) course 教员编号错误,请将没有担任课程的教员编号填充到错误的教员编号
    (3) score 请根据课程制作分区表,并在填充数据时检验分数是否合理,对不合理的分数计算该学员其他课程的平均成绩作为不合理成绩的分数

1、上传数据

在 hdfs 上创建数据文件目录

hdfs dfs -mkdir -p /tmp/hive_test/data/student
hdfs dfs -mkdir -p /tmp/hive_test/data/course
hdfs dfs -mkdir -p /tmp/hive_test/data/teacher
hdfs dfs -mkdir -p /tmp/hive_test/data/score

上传 csv 文件到 hdfs 数据文件目录

hdfs dfs -put /opt/data/student.csv /tmp/hive_test/data/student
hdfs dfs -put /opt/data/course.csv /tmp/hive_test/data/course
hdfs dfs -put /opt/data/teacher.csv /tmp/hive_test/data/teacher
hdfs dfs -put /opt/data/score.csv /tmp/hive_test/data/score

 

2、导入数据

创建数据库 hive_test

drop database if exists hive_test cascade;
create database hive_test;
use hive_test;

创建外部表 ext_student

create external table if not exists ext_student (
	s_id int,
	s_name string,
	s_birth date,
	s_sex string
)
row format delimited fields terminated by ','
stored as textfile
location '/tmp/hive_test/data/student'
tblproperties("skip.header.line.count"="1")

创建外部表 ext_course

create external table if not exists ext_course (
	c_id int,
	c_name string,
	t_id int
)
row format delimited fields terminated by ','
stored as textfile
location '/tmp/hive_test/data/course'
tblproperties("skip.header.line.count"="1")

创建外部表 ext_teacher

create external table if not exists ext_teacher (
	t_id int,
	t_name string
)
row format delimited fields terminated by ','
stored as textfile
location '/tmp/hive_test/data/teacher'
tblproperties("skip.header.line.count"="1")

创建外部表 ext_score

create external table if not exists ext_score (
	s_id int,
	c_id int,
	s_score int
)
row format delimited fields terminated by ','
stored as textfile
location '/tmp/hive_test/data/score'
tblproperties("skip.header.line.count"="1")

 

3、清洗数据

创建内部表 student,将未填充性别的人员设置为女

create table if not exists student as
select s_id,s_name,s_birth,if(s_sex = '', '女', s_sex) as s_sex from ext_student;

创建内部表 teacher,数据正常无需清洗,直接导入原始数据

create table if not exists teacher as
select * from ext_teacher;

创建内部表 course,将没有担任课程的教员编号填充到错误的教员编号

create table if not exists course as
with
-- t1:正确的课程信息及教员编号:c_id,c_name,t_id
t1 as (select c_id,c_name,t_id from ext_course c where exists(select * from teacher t where t.t_id = c.t_id)),
-- t2:教员编号错误的课程信息:c_id,c_name
t2 as (select c.c_id,c.c_name from ext_course c where not exists(select * from t1 where t1.t_id = c.t_id)),
-- t3:未担任课程的教员编号:t_id
t3 as (select t.t_id from teacher t where not exists(select * from ext_course c where c.t_id = t.t_id)),
-- t4:t2和t3拼接(交叉连接),将未担任课程的教员编号拼到教员编号错误的课程信息后,再与t1合并,即为正确的数据
t4 as (select c_id,c_name,t_id from t1 union all select c_id,c_name,t_id from t2,t3)
-- union后顺序会乱,需要按照课程id排下序
select * from t4 order by c_id

创建内部表 score,按照课程分区

create table if not exists score (
	s_id int,
	s_score int
)
partitioned by (c_id int)
row format delimited fields terminated by ','
stored as textfile

-- 开启动态分区
set hive.exec.dynamic.partition=true
set hive.exec.dynamic.partition.mode=nonstrict

-- 清洗外部表ext_score并将数据导入内部表score
-- 对不合理成绩的分数计算该学员其他课程的平均成绩替换该分数
with
t1 as (select s_id,round(avg(s_score), 1) as avg_score from ext_score where s_score between 0 and 100 group by s_id)
insert overwrite table score partition(c_id)
select sc.s_id,if(sc.s_score < 0 or sc.s_score > 100, t1.avg_score, sc.s_score) as s_score,sc.c_idfrom ext_score sc inner join t1 on sc.s_id = t1.s_id

 

4、验证数据

查看学生表 student

select * from student;
+------+--------+------------+-------+
| s_id | s_name | s_birth    | s_sex |
+------+--------+------------+-------+
|    1 | 赵雷   | 1990-01-01 | 男    |
|    2 | 钱电   | 1990-12-21 | 男    |
|    3 | 孙风   | 1990-05-20 | 男    |
|    4 | 李云   | 1990-08-06 | 男    |
|    5 | 周梅   | 1991-12-01 | 女    |
|    6 | 吴兰   | 1992-03-01 | 女    |
|    7 | 郑竹   | 1989-07-01 | 女    |
|    8 | 王菊   | 1990-01-20 | 女    |
+------+--------+------------+-------+

查看课程表 course

select * from course;
+------+--------+------+
| c_id | c_name | t_id |
+------+--------+------+
|    1 | 语文   |    2 |
|    2 | 数学   |    1 |
|    3 | 英语   |    3 |
+------+--------+------+

查看教师表 teacher

select * from teacher;
+------+--------+
| t_id | t_name |
+------+--------+
|    1 | 张三   |
|    2 | 李四   |
|    3 | 王五   |
+------+--------+

查看成绩表 score

select * from score;
+------+------+---------+
| s_id | c_id | s_score |
+------+------+---------+
|    1 |    1 |      80 |
|    1 |    2 |      90 |
|    1 |    3 |      99 |
|    2 |    1 |      70 |
|    2 |    2 |      60 |
|    2 |    3 |      65 |
|    3 |    1 |      80 |
|    3 |    2 |      80 |
|    3 |    3 |      80 |
|    4 |    1 |      50 |
|    4 |    2 |      30 |
|    4 |    3 |      40 |
|    5 |    1 |      76 |
|    5 |    2 |      87 |
|    6 |    1 |      31 |
|    6 |    3 |      34 |
|    7 |    2 |      89 |
|    7 |    3 |      98 |
+------+------+---------+

表关系如下
表关系
 

练习 50 题

 

1、查询"01"课程比"02"课程成绩高的学生的信息及课程分数

with
sc1 as (select * from score where c_id = 1),
sc2 as (select * from score where c_id = 2)
select s.*,sc1.s_score as score_01,sc2.s_score as score_02
from student s
inner join sc1 on s.s_id = sc1.s_id
inner join sc2 on s.s_id = sc2.s_id
where sc1.s_score > sc2.s_score;
+------+--------+------------+-------+----------+----------+
| s_id | s_name | s_birth    | s_sex | score_01 | score_02 |
+------+--------+------------+-------+----------+----------+
|    2 | 钱电   | 1990-12-21 | 男    |       70 |       60 |
|    4 | 李云   | 1990-08-06 | 男    |       50 |       30 |
+------+--------+------------+-------+----------+----------+

 

2、查询"01"课程比"02"课程成绩低的学生的信息及课程分数

with
sc1 as (select * from score where c_id = 1),
sc2 as (select * from score where c_id = 2)
select s.*,sc1.s_score as score_01,sc2.s_score as score_02
from student s
inner join sc1 on s.s_id = sc1.s_id
inner join sc2 on s.s_id = sc2.s_id
where sc1.s_score < sc2.s_score;
+------+--------+------------+-------+----------+----------+
| s_id | s_name | s_birth    | s_sex | score_01 | score_02 |
+------+--------+------------+-------+----------+----------+
|    1 | 赵雷   | 1990-01-01 | 男    |       80 |       90 |
|    5 | 周梅   | 1991-12-01 | 女    |       76 |       87 |
+------+--------+------------+-------+----------+----------+

 

3、查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩

with
t1 as (select s_id,avg(s_score) as avg_score from score group by s_id having avg_score >= 60)
select s.s_id,s.s_name,round(avg_score, 2) as avg_score
from student s
inner join t1 on s.s_id = t1.s_id;

+
2022 大一大二基础hive考试题 10. HDFS是基于流数据模式访问和处理超大文件的需求而开发的,具有 高容错、高可靠性、高可扩展性、高吞吐率 等特征,适合的读写任务是__________一次写入,多次读写。1.将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤中进行的?2.为数据的总体分布建模,把多维空间划分成组属于数据挖掘的哪一类任务?1.HIVE的本质是:将HQL转化为___MapReduce___程序。C、当Hive内表的元数据发生变化时,内表的改动修改不会同步给元数据。 阅读详情

相关推荐

保姆式教学Hive考试

考试冲冲冲

qq_56618631的博客 622

hive 50道经典练习

数据 Student(Sid,Sname,Sage,Ssex)学生表 Sid:学号 Sname:学生姓名 Sbirth:学生生日 Ssex:学生性别 Course(Cid,Cname,T#)课程表 Cid:课程编号 Cname:课程名称 Tid:教师编号 SC(Sid,Cid,score)成绩表 Sid:学号 Cid:课程编号 score:成绩 Teacher(Tid,Tname)教师表 T...

qq_35831052的博客 5176

Hive考试练习题(参考题解)

修改属性“javax.jdo.option.ConnectionDriverName”的值为“com.mysql.jdbc.Driver”请打开【VMwareWorkstationPro】中的【linux1】环境,登录账号【root】密码【root】。修改属性“hive.downloaded.resources.dir”的值为“/opt/soft/hive/tmp”修改属性“hive.exec.local.scratchdir”的值为“/opt/soft/hive/tmp”使用【mytest】数据库。...

m0_67401499的博客 2078

【面试系列】Hive 高频面试题解答

本文介绍了 Hive 技术在初级、中级和高级面试中的常见问题及其详细解答。初级面试题集中于 Hive 的基础概念,如 Hive 架构、分区和分桶等。中级面试题探讨了 Hive 的查询优化技术、动态分区、UDF 和小文件处理问题。高级面试题则涵盖了 Hive 的 ACID 支持、物化视图、Tez 引擎及实时数据处理的局限性。通过这篇文章,读者可以深入了解 Hive 面试的常考知识点,并掌握应对各种难度面试的技巧。

在路上的专栏 1151

hive练习数据和练习题及答案

hive练习数据和hive练习题包含了hive练习数据,hive数据的建表ddl和hive练习题,非常适合做hive练习,新手培训,快速入门等; 包含以下练习: hive的group by 和集合函数 hive的Order By/Sort By/Distribute By Join查询,join只支持等值连接 LEFT,RIGHT 和 FULL OUTER JOIN LEFT SEMI JOIN Hive当前没有实现 IN/EXISTS 子查询,可以用 LEFT SEMI JOIN 重写子查询语句。

PX4实战指南:通过遥控器通道直连实现舵机PWM控制

本文详细介绍了如何通过PX4飞控实现遥控器通道直连控制舵机PWM输出的完整流程。从硬件准备、遥控器配对到PX4参数配置和硬件连接,提供了实战技巧和常见问题解决方案,帮助无人机爱好者快速掌握舵机控制技术。重点讲解了AUX Passthrough模式设置和PWM参数调整等关键步骤。

weixin_29195217的博客 153

Unity Shader实战:用Matcap给你的低模角色快速换上‘次世代’材质(附完整Shader代码)

本文详细介绍了Unity中Matcap技术的实战应用,通过Shader代码实现低模角色的次世代材质表现。Matcap技术利用预烘焙光照贴图,显著提升材质质感同时保持极低性能消耗,特别适合移动游戏和独立开发。文章包含完整Shader代码、平面模型着色优化方案及动态环境反射增强技巧,帮助开发者快速提升低模视觉效果。

weixin_28718755的博客 385

【数学模型】灰色关联分析

数学模型-灰色关联分析

suic009的博客 1万+

嵌入式学习笔记- 关于电容的纹波电流

纹波电流是导致电解电容发热、影响其寿命的关键交流电流成分。它不是一种特殊的电流,而是电路中必然存在的现象。要重视,不能忽视。必须保证电路中的纹波电流 < 电容的额定纹波电流。电容鼓包爆浆,要怀疑是否是纹波电流过大或电容ESR变大所致。希望这个解释能帮助您彻底理解这个概念!二 电容纹波电流与频率的关系在大多数情况下,频率越高,电容所能承受的额定纹波电流值越大。【个人理解:因为频率越低ESR越大,具体见第三节ESR与频率的关系】下面我为您详细解释为什么会这样,以及在实际应用中如何考虑。

qq_35771411的博客 2192

3U 与 SV630A 伺服实现 CANLINK 通讯

SD410这组参数特别重要,这个32位特别重要,是防止数值乱码的关键。

weixin_42714122的博客 2694

使用Python实现深度学习模型:智能光污染监测与管理

本项目将通过以下几个步骤实现智能光污染监测:收集光污染图像数据数据预处理构建深度学习模型训练模型评估模型部署模型用于实时监测通过本文介绍的步骤,我们实现了一个使用Python和深度学习技术的智能光污染监测与管理系统。该系统能够自动识别光污染源,为相关管理部门提供科学依据,以便更好地规划和管理城市照明。同时,这一方法还可以扩展到其他环境监测领域,为环境保护贡献力量。

Echo_Wish 590

AMBA-CHI协议详解(三)

Write Transactions、Atomic transactions、 Stash transactions、 Dataless transactions的等各个事务的事务流。

Crazzy_M的博客 3180

[毕设项目-大模型微调]现代文翻译文言文【基于LLaMA3.1-8B微调】

教你基于LLaMA3.1-8B微调如何做到现代文翻译文言文

逐梦苍穹的博客 2296

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

上一篇: MySQL 经典练习 50 题(完美解答版)
下一篇: Linux 配置 SSH 免密登录
GodSuzzZ
博客等级 码龄7年 319粉丝 15原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值