hive学习08天-一次hvie面试题

Posted students

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hive学习08天-一次hvie面试题相关的知识,希望对你有一定的参考价值。

题目1:计算用户发过多少朋友圈、获得多少点赞
用你擅长的语言计算,数据如下:
T1:10w行数据
uid(用户id)    log_id(日记id)
uid1    log_id1
uid1    log_id2
uid2    log_id3
...    ...

T2:1000w行数据,注:没有被点赞的日记不记录
log_id(日记id)    like_uid(点赞的用户id)
log_id1    uid2
log_id1    uid3
log_id1    uid4
log_id3    ud2
...    ...
计算
uid(用户id)    发过多少日记    获得多少点赞
uid1    2    3
uid2    1    1
...    ...    ...

 

解法:

 

①统计每个用户发表日志量
select  uid,count(*) as log_count from T1 group by uid

②统计每个用户的点赞量
select uid,sum(like_uid) as log_like_count group_by uid
from T1 join T2
on T1.log_id =T2.log_id

③将两个表合并
select tt1.uid,tt1.log_count,tt2.log_like_count from
(
select  uid,count(*) as log_count from T1 group by uid
)tt1
join
(
select uid,sum(like_uid) as log_like_count group_by uid
from T1 join T2
where T1.log_id =T2.log_id
)tt2
on
tt1.uid=tt2.uid

 

 

 

题目2:map及rudece阶段共有几次排序

 


1)当map函数产生输出时,会首先写入内存的环形缓冲区,当达到设定的阀值,在刷写磁盘之前,后台线程会将缓冲区的数据划分成相应的分区。在每个分区中,后台线程按键进行内排序
2)在Map任务完成之前,磁盘上存在多个已经分好区,并排好序的,大小和缓冲区一样的溢写文件,这时溢写文件将被合并成一个已分区且已排序的输出文件。由于溢写文件已经经过第一次排序,所有合并文件只需要再做一次排序即可使输出文件整体有序。
3)在reduce阶段,需要将多个Map任务的输出文件copy到ReduceTask中后合并,由于经过第二次排序,所以合并文件时只需再做一次排序即可使输出文件整体有序

 

以上是关于hive学习08天-一次hvie面试题的主要内容,如果未能解决你的问题,请参考以下文章

Hive面试题系列第一题-连续登录问题

Hive面试题系列第一题-连续登录问题

前端面试每日 3+1 —— 第692天

hvie 进阶笔记

前端技能树,面试复习第 54 天—— 手写代码:情景题

面试题: Hive-SQL查询连续活跃登录用户思路详解