2024年最新Hive 热门数据分析笔试题(干货满满,持续更新中,2024大厂大数据开发高级面试题及答案

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

2014,北航,2,方部盾,数学,49
2014,北航,2,东门雹,数学,77



create table t_score (
time int,
school string,
class int,
name string,
subjects string,
score int
)
row format delimited fields terminated by ‘,’;

load data local inpath “/opt/data/a.csv” into table t_score


![在这里插入图片描述](https://img-blog.csdnimg.cn/20200323202619803.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JlaWlzQmVp,size_16,color_FFFFFF,t_70#pic_center)


问题:


#### 分组 TopN,选出2014年每个学校、每个年级、分数前三的科目



select t.*
from
(
select
time,
school,
class,
score,
row_number() over (partition by school, class, subjects order by score desc) rank_code
from t_score
where time = “2014”
) t
where t.rank_code <= 3;


![在这里插入图片描述](https://img-blog.csdnimg.cn/20200323210702927.png#pic_center)  
 **详解如下:**  
   **row\_number函数:row\_number() 按指定的列进行分组生成行序列,从 1 开始,如果两行记录的分组列相同,则行序列 +1。**  
   over 函数:是一个窗口函数。  
   over (order by score) 按照 score 排序进行累计,order by 是个默认的开窗函数。  
   over (partition by class) 按照班级分区。  
   over (partition by class order by score) 按照班级分区,并按着分数排序。  
   over (order by score range between 2 preceding and 2 following) 窗口范围为当前行的数据幅度减2加2后的范围内的数据求和。


优化:



row_number() over (distribute by school, class, subjects sort by score desc) rank_code


#### 2014年,北航,每个班级,每科的分数,及分数上下浮动 2 分的总和



select time,school, class, subjects, score,
sum(score) over (order by score range between 2 preceding and 2 following) sscore
from t_score
where time = “2014” and school=“北航”;


**over (order by score rows between 2 preceding and 2 following):窗口范围为当前行前后各移动2行。**


#### where 与 having:2012年,清华 0 年级,总成绩大于 200 分的学生以及学生数



select *,sum(score) as total_score,
count(1) over (partition by school, class)
from t_score where school=“清华” and class = 0 and time=2012
group by school, class, name,time,subjects,score having total_score > 50;


![在这里插入图片描述](https://img-blog.csdnimg.cn/20200323213033893.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JlaWlzQmVp,size_16,color_FFFFFF,t_70)  
 **having 是分组(group by)后的筛选条件,分组后的数据组内再筛选,也就是说 HAVING 子句可以让我们筛选成组后的各组数据。  
 where 则是在分组,聚合前先筛选记录。也就是说作用在 GROUP BY 子句和 HAVING 子句前。**


### 四、情景分析题


今年加入进来了 10 个学校,学校数据差异很大计算每个学校的平均分。


该题主要是考察数据倾斜的处理方式。


**group by** 方式很容易产生数据倾斜 ❗,需要注意一下几点:



Map 端部分聚合
hive.map.aggr=true(用于设定是否在 map 端进行聚合,默认值为真,相当于 combine)
hive.groupby.mapaggr.checkinterval=100000(用于设定 map 端进行聚合操作的条数)

有数据倾斜时进行负载均衡
设定 hive.groupby.skewindata,当选项设定为 true 是,生成的查询计划有两个 MapReduce 任务。

(先打散数据)
第一个 MapReduce 中,map 的输出结果集合会随机分布到 reduce 中, 每个 reduce 做部分聚合操作,并输出结果。
这样处理的结果是,相同的 group by key 有可能分发到不同的 reduce 中,从而达到负载均衡的目的;

第二个 MapReduce 任务再根据预处理的数据结果按照 group by key 分布到 reduce 中
(这个过程可以保证相同的 group by key 分布到同一个 reduce 中),最后完成最终的聚合操作。


🚀


假设我创建了一张表,其中包含了 2016 年客户完成的所有交易的详细信息:



CREATE TABLE transaction_details
(cust_id INT, amount FLOAT, month STRING, country STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘,’ ;


现在我插入了 100 万条数据,我想知道每个月的总收入。


问:如何高效的统计出结果,写出步骤即可。 (提示:**动态分区**)





![img](https://img-blog.csdnimg.cn/img_convert/cd3066593deabcedaef7f658c8974602.png)
![img](https://img-blog.csdnimg.cn/img_convert/62b504d1de46b146787f354cce394a24.png)
![img](https://img-blog.csdnimg.cn/img_convert/daa06bb182762bb766e4b50961f280f2.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**

的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值