Hadoop数据开发笔试题(一)

本文详细介绍Hive SQL在实际业务场景中的应用,包括考试记录编码转换、数据倾斜处理、统计逻辑实现等,并对比内部表与外部表、视图功能,解析collect_list与collect_set函数的差异。

一、业务场景:考试记录编码转名称

a)、要求1:答案选项表只能关联一次
b)、要求2:答案顺序不能错位,没有选择项,置空

表一:考试记录表

考试人试卷名称题目编号答案编码
张三exam-a0101ACD

表二:答案选项表

试卷名称题号编号题目名称答案名称
exam-a0101您最近5年的职业A教师
exam-a0101您最近5年的职业B医生
exam-a0101您最近5年的职业C销售
exam-a0101您最近5年的职业D白领

需求一:

  • 请使用hive实现将考试记录的编码,转换成对应的项目名称及答案名称,关联后的结果如下:
考试人试卷名称题号编号题目名称答案A答案B答案C答案D
张三exam-a0101您最近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实现下列的统计逻辑的实现

YFRQSUDO
2018-01-012018-01-013
2018-01-012018-01-024
2018-01-012018-01-035
2018-01-012018-01-044
2018-02-012018-02-012
2018-02-012018-02-024

结果统计:

YFRQSUDO
2018-01-012018-01-013
2018-01-012018-01-027
2018-01-012018-01-0312
2018-01-012018-01-0416
2018-02-012018-02-012
2018-02-012018-02-026

六、Hive中Sort By, Order By, Cluster By, Distributed By分别是什么含义和用途?

七、Hive数据倾斜的原因有哪些?请列举一下具体的处理方法。

八、本月某种产品的销售额相比上个月下降的主要原因是什么如何分析?

九、消费者偏好同手机品牌的关系,如下表:从这些数据种,你可以得出什么结论?

消费者偏好波导摩托罗拉诺基亚三星合计
137243426121
280645366263
398138132133501
410910811696439
528303544
合计3523643703651451

十、公司楼下有一个便利店,35平米,每天有6位工作人员,请估算当天的营业额

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值