在大数据面试中,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经典面试题——级联求和(访客访问统计报表)相关推荐

  1. 利用 visitor map (访客地图) 统计网站访客

    visitor map (访客地图) 通过向网页中 添加 插件代码,可以实现 利用 visitor map (访客地图) 统计网站访客 . 提供 visitor map 插件服务的网站 visitor ...

  2. 【实时数仓】省份交易额统计接口、新老访客对比接口、访客分时统计接口

    文章目录 一 省份交易额统计接口 1 Sugar配置 (1)图表配置 (2)接口地址 (3)数据格式 (4)执行SQL 2 数据接口实现 (1)创建地区交易额统计实体类ProvinceStats (2 ...

  3. 不蒜子实现网站访问量访客数统计

    个人博客网站:http://zhangchuanjun.cn 或者:我个人网站 有许多网站分析工具,比如百度统计,谷歌分析等工具,这类工具虽然有不错的网站统计功能,但是都不能呈现在自己的网站上,都需要 ...

  4. 浏览页面 访客 数量 统计

    int n=0;String counter=(String)application.getAttribute("counter");if(counter!=null){n=Int ...

  5. hive经典面试题4--如何用分时数据计算分时累计数据?如何在分时累计数据为空的时候去补全数据?

    背景: 在互联网公司经常会用每10分钟为维度去统计某一个指标,这种统计我们称为分时数据.例如10分钟内某个渠道的安装数据,通过这个数据可以实时查看这个渠道质量好坏,如果这个渠道质量不行,那么就停止投放 ...

  6. hive经典面试题2--次日留存、3日、7日留存怎么计算

    背景:互联网公司,分析app上线后的效果,通常会通过很多指标来分析,其中一个指标就是留存率,留存率中最重要的就是次日留存,如果次日留存很高,说明这个app很成功,用户粘性高. 留存是怎么定义的呢? 一 ...

  7. 简单HQL练习-统计店铺访客数

    题目: 1.每个店铺的UV(访客数) 2.每个店铺访问top3的信息(店铺名称,访客id,访问次数) 输出结果: a 4 b 4 c 3输出结果: a u5 1 a u1 2 a u2 3 b u4 ...

  8. 孟:解密获取网站访客QQ号码的方法及原理

    获取网站QQ访客 最近网络上出了一种,访客访问你的网站就能获取到访客的QQ号码.很多商家用来谋取利益,有商家卖到3000一套程序. 经过几天的分析研究,只研究出了一种极其简单方式.还有其他方式还没有找 ...

  9. 基于博客系统的访客日志记录

    当我们做的一些应用需要记录一些接口被访问时用户的信息时,我们就需要用到一些记录请求的技术,并记录日志到数据库.本文章使用的方法:注解+AOP 原理:事先在数据库中建立一个记录访客日志的一张表.先自定义 ...

最新文章

  1. 人脸检测中,如何构建输入图像金字塔
  2. 从青铜到王者的路线,java枚举类使用场景
  3. Repeater的嵌套
  4. (26) CSS3 2D转换transform
  5. Hadoop之内存问题
  6. 访问不上服务器的任何端口
  7. 持续集成最佳实践_集成服务性能最佳实践–数据流优化
  8. 红黑树(Red Black Tree)
  9. 防火墙限制TCP流量新方法
  10. 互动媒体设计之好玩儿的游戏(屁民科普)
  11. OverFeat 个人总结
  12. 2020年全球及中国干细胞医疗行业发展现状及竞争情况分析,美国领先于世界,北上广领先于中国「图」
  13. ps去水印教程_Ps去水印教程:简单三步教新手学习去狮子图像上的水印,多余的文...
  14. java如何导出excel_JAVA如何导出EXCEL表格
  15. LeetCode 1646. 获取生成数组中的最大值
  16. nmcli命令详解>>>创建热点,连接wifi,管理连接等
  17. 玩家的numpertpry 对象 中 不仅仅要同步 君主武将的等级,阶级也要同步
  18. spark shuffle(ExchangeExec)过多导致任务运行过慢甚至超时
  19. Blast结果的详细解析
  20. 数据信息系统的计算机应用,管理信息系统与计算机应用.ppt

热门文章

  1. mysql 查询 及时间格式化
  2. MySQL对时间戳的格式化
  3. Oauth与Shiro整合的开源项目
  4. 王道书P41 T22(单链表实现)
  5. html中确认密码怎么,HTML确认密码
  6. GitHub在Markdown中插入仓库中的图片
  7. 完全平方公式、平方差公式、一个数负次方
  8. Excel:文本型日期转化为数值型日期
  9. python3文件路径操作常用方法带示例详解(os.path模块,os.listdir,os.walk,os.scandir方法等)(不定期更新整理中)
  10. 零点和极点的物理意义