Hive经典面试题——级联求和(访客访问统计报表)
在大数据面试中,Hive知识的考察大部分会问级联求和,业务场景虽然有很多种,比如说,年收入,月收入统计;访客访问次数年统计,月统计。等等。但是基本根源知识是级联求和,本文就以访客访问统计为例。
1、基本需求
根据访客的每日访问信息,进行累计访问:
- 输入数据:
有如下访客访问次数统计表 t_access_times
为了减轻计算复杂度,去掉了天的信息只留下了年月。
- 输出数据:
需要输出报表:t_access_times_accumulate
2、实现步骤
2.1 原始数据
vi /home/chunsoft/t_access_times.datA,2015-01,5
A,2015-01,15
B,2015-01,5
A,2015-01,8
B,2015-01,25
A,2015-01,5
A,2015-02,4
A,2015-02,6
B,2015-02,10
B,2015-02,5
2.2 创建表
jdbc:hive2://172.16.208.128:10000>create table t_access_times(username string,month string,access_time int)
row format delimited fields terminated by ',';
2.3 将数据加载到表中
jdbc:hive2://172.16.208.128:10000>
load data local inpath '/home/chunsoft/t_access_times.dat' into table t_access_times;
2.4 计算单个用户的月访问次数
jdbc:hive2://172.16.208.128:10000>
select username,month,sum(access_time) as access_time from t_access_times group by username,month;+-----------+----------+---------+--+
| username | month | access_time |
+-----------+----------+---------+--+
| A | 2015-01 | 33 |
| A | 2015-02 | 10 |
| B | 2015-01 | 30 |
| B | 2015-02 | 15 |
+-----------+----------+---------+--+
2.4 上面的表自己跟自己进行inner join方便求总访问
select A.*,B.* from
(select username,month,sum(access_time) as access_time from t_access_times group by username,month) A
inner join
(select username,month,sum(access_time) as access_time from t_access_times group by username,month) B
on
A.username=B.username+-------------+----------+-----------+-------------+----------+-----------+--+
| a.username | a.month | a.access_time | b.username | b.month | b.access_time |
+-------------+----------+-----------+-------------+----------+-----------+--+
| A | 2015-01 | 33 | A | 2015-01 | 33 |
| A | 2015-01 | 33 | A | 2015-02 | 10 |
| A | 2015-02 | 10 | A | 2015-01 | 33 |
| A | 2015-02 | 10 | A | 2015-02 | 10 |
| B | 2015-01 | 30 | B | 2015-01 | 30 |
| B | 2015-01 | 30 | B | 2015-02 | 15 |
| B | 2015-02 | 15 | B | 2015-01 | 30 |
| B | 2015-02 | 15 | B | 2015-02 | 15 |
+-------------+----------+-----------+-------------+----------+-----------+--+
2.5 根据当前月份的大小来判断累计求和并排序
select A.username,A.month,max(A.access_time) access_time,sum(B.access_time) accumulate
from(select username,month,sum(access_time) as access_time from t_access_times group by username,month) Ainner join(select username,month,sum(access_time) as access_time from t_access_times group by username,month) BonA.username=B.username
where B.month<=A.month
group by A.username,A.month
order by A.username,A.month+-------------+----------+---------+-------------+--+
| a.username | a.month | access_time | accumulate |
+-------------+----------+---------+-------------+--+
| A | 2015-01 | 33 | 33 |
| A | 2015-02 | 10 | 43 |
| B | 2015-01 | 30 | 30 |
| B | 2015-02 | 15 | 45 |
这里面的max(A.access_time) 起到一个聚合作用,保留一条结果。
Hive经典面试题——级联求和(访客访问统计报表)相关推荐
- 利用 visitor map (访客地图) 统计网站访客
visitor map (访客地图) 通过向网页中 添加 插件代码,可以实现 利用 visitor map (访客地图) 统计网站访客 . 提供 visitor map 插件服务的网站 visitor ...
- 【实时数仓】省份交易额统计接口、新老访客对比接口、访客分时统计接口
文章目录 一 省份交易额统计接口 1 Sugar配置 (1)图表配置 (2)接口地址 (3)数据格式 (4)执行SQL 2 数据接口实现 (1)创建地区交易额统计实体类ProvinceStats (2 ...
- 不蒜子实现网站访问量访客数统计
个人博客网站:http://zhangchuanjun.cn 或者:我个人网站 有许多网站分析工具,比如百度统计,谷歌分析等工具,这类工具虽然有不错的网站统计功能,但是都不能呈现在自己的网站上,都需要 ...
- 浏览页面 访客 数量 统计
int n=0;String counter=(String)application.getAttribute("counter");if(counter!=null){n=Int ...
- hive经典面试题4--如何用分时数据计算分时累计数据?如何在分时累计数据为空的时候去补全数据?
背景: 在互联网公司经常会用每10分钟为维度去统计某一个指标,这种统计我们称为分时数据.例如10分钟内某个渠道的安装数据,通过这个数据可以实时查看这个渠道质量好坏,如果这个渠道质量不行,那么就停止投放 ...
- hive经典面试题2--次日留存、3日、7日留存怎么计算
背景:互联网公司,分析app上线后的效果,通常会通过很多指标来分析,其中一个指标就是留存率,留存率中最重要的就是次日留存,如果次日留存很高,说明这个app很成功,用户粘性高. 留存是怎么定义的呢? 一 ...
- 简单HQL练习-统计店铺访客数
题目: 1.每个店铺的UV(访客数) 2.每个店铺访问top3的信息(店铺名称,访客id,访问次数) 输出结果: a 4 b 4 c 3输出结果: a u5 1 a u1 2 a u2 3 b u4 ...
- 孟:解密获取网站访客QQ号码的方法及原理
获取网站QQ访客 最近网络上出了一种,访客访问你的网站就能获取到访客的QQ号码.很多商家用来谋取利益,有商家卖到3000一套程序. 经过几天的分析研究,只研究出了一种极其简单方式.还有其他方式还没有找 ...
- 基于博客系统的访客日志记录
当我们做的一些应用需要记录一些接口被访问时用户的信息时,我们就需要用到一些记录请求的技术,并记录日志到数据库.本文章使用的方法:注解+AOP 原理:事先在数据库中建立一个记录访客日志的一张表.先自定义 ...
最新文章
- 人脸检测中,如何构建输入图像金字塔
- 从青铜到王者的路线,java枚举类使用场景
- Repeater的嵌套
- (26) CSS3 2D转换transform
- Hadoop之内存问题
- 访问不上服务器的任何端口
- 持续集成最佳实践_集成服务性能最佳实践–数据流优化
- 红黑树(Red Black Tree)
- 防火墙限制TCP流量新方法
- 互动媒体设计之好玩儿的游戏(屁民科普)
- OverFeat 个人总结
- 2020年全球及中国干细胞医疗行业发展现状及竞争情况分析,美国领先于世界,北上广领先于中国「图」
- ps去水印教程_Ps去水印教程:简单三步教新手学习去狮子图像上的水印,多余的文...
- java如何导出excel_JAVA如何导出EXCEL表格
- LeetCode 1646. 获取生成数组中的最大值
- nmcli命令详解>>>创建热点,连接wifi,管理连接等
- 玩家的numpertpry 对象 中 不仅仅要同步 君主武将的等级,阶级也要同步
- spark shuffle(ExchangeExec)过多导致任务运行过慢甚至超时
- Blast结果的详细解析
- 数据信息系统的计算机应用,管理信息系统与计算机应用.ppt