一、业务场景:考试记录编码转名称
a)、要求1:答案选项表只能关联一次
b)、要求2:答案顺序不能错位,没有选择项,置空
表一:考试记录表
考试人 | 试卷名称 | 题目编号 | 答案编码 |
---|---|---|---|
张三 | exam-a | 0101 | ACD |
表二:答案选项表
试卷名称 | 题号编号 | 题目名称 | 答案 | 名称 |
---|---|---|---|---|
exam-a | 0101 | 您最近5年的职业 | A | 教师 |
exam-a | 0101 | 您最近5年的职业 | B | 医生 |
exam-a | 0101 | 您最近5年的职业 | C | 销售 |
exam-a | 0101 | 您最近5年的职业 | D | 白领 |
需求一:
- 请使用hive实现将考试记录的编码,转换成对应的项目名称及答案名称,关联后的结果如下:
考试人 | 试卷名称 | 题号编号 | 题目名称 | 答案A | 答案B | 答案C | 答案D |
---|---|---|---|---|---|---|---|
张三 | exam-a | 0101 | 您最近5年的职业 | A | 教师 | NULL | 销售人员 |
答案:
第一步:把考试记录表列转行
- 在Hive中创建考试记录表exam_record,SQL语句如下:
create table exam_record (
testers string,
test_papers string,
title_number string,
answer_id string
) ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t";
- 创建答案选项表(answer_option)
create table answer_option (
test_paper string,
qid_number string,
title_name string,
answer string,
name string
) ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t";
第二步:本地Vi编辑好后把数据加载进去
1、把数据加载到exam_record表中:
load data local inpath '/home/hadoop/data/test.txt' overwrite into table exam_record;
2、把数据加载到answer_option表中:
load data local inpath '/home/hadoop.data/test.txt' overwrite into table answer_option;
第三步:使用如下SQL语句完成exam_record列转行
select testers, test_papers, title_number, answer
from
exam_record
lateral view explode(split(answer_id,"")) b AS answer;
第四步:基于3的分析把结果创建到一张临时表上
create table tmp_exam_record
as
select testers, test_papers, title_number, answer
from
exam_record
lateral view explode(split(answer_id,"")) b AS answer;
第五步:把四中的临时表和答案选项表进行join操作
二、collect_list()、collect_set()这两个函数的区别是什么,参数类型有什么限制?
-
它们都是将分组中某列转换为一个数组返回,区别是一个collect_set去重,而collect_list不去重。
-
https://blog.csdn.net/zhikanjiani/article/details/100980233
三、内部表(管理表Managed table)和外部表的区别?
参考博客:
- https://blog.csdn.net/zhikanjiani/article/details/89075266#id_5.2
1、managed_table(内部表)
- 删除内部表:数据(hdfs上的数据)+ 元数据都删除了
2、external_table
- 删除外部表:数据不删除,MySQL中元数据信息删除
四、Hive的视图和Oracle数据库的视图异同点
五、用2种方法:分别1句SQL实现下列的统计逻辑的实现
YF | RQ | SUDO |
---|---|---|
2018-01-01 | 2018-01-01 | 3 |
2018-01-01 | 2018-01-02 | 4 |
2018-01-01 | 2018-01-03 | 5 |
2018-01-01 | 2018-01-04 | 4 |
2018-02-01 | 2018-02-01 | 2 |
2018-02-01 | 2018-02-02 | 4 |
结果统计:
YF | RQ | SUDO |
---|---|---|
2018-01-01 | 2018-01-01 | 3 |
2018-01-01 | 2018-01-02 | 7 |
2018-01-01 | 2018-01-03 | 12 |
2018-01-01 | 2018-01-04 | 16 |
2018-02-01 | 2018-02-01 | 2 |
2018-02-01 | 2018-02-02 | 6 |
六、Hive中Sort By, Order By, Cluster By, Distributed By分别是什么含义和用途?
七、Hive数据倾斜的原因有哪些?请列举一下具体的处理方法。
八、本月某种产品的销售额相比上个月下降的主要原因是什么如何分析?
九、消费者偏好同手机品牌的关系,如下表:从这些数据种,你可以得出什么结论?
消费者偏好 | 波导 | 摩托罗拉 | 诺基亚 | 三星 | 合计 |
---|---|---|---|---|---|
1 | 37 | 24 | 34 | 26 | 121 |
2 | 80 | 64 | 53 | 66 | 263 |
3 | 98 | 138 | 132 | 133 | 501 |
4 | 109 | 108 | 116 | 96 | 439 |
5 | 28 | 30 | 35 | 44 | |
合计 | 352 | 364 | 370 | 365 | 1451 |
十、公司楼下有一个便利店,35平米,每天有6位工作人员,请估算当天的营业额