第 3 题 间隔连续问题

该博客探讨了一种游戏公司用户登录数据的分析问题,目标是计算每个用户允许间隔一天的最大连续登录天数。文章通过两种方法,包括等差法和分组法,详细解释了如何利用Hadoop和HDFS来解决这一间隔连续问题。等差法虽然直观但扩展性不佳,而分组法则通过LAG函数和窗口函数实现更灵活的分组和计算,最终得出用户最长连续登录的天数。
摘要由CSDN通过智能技术生成

1、题目要求

        某游戏公司记录的用户每日登录数据,计算每个用户最大的连续登录天数,可以间隔一天。解释:如果一个用户在 1,3,5,6 登录游戏,则视为连续 6 天登录。

1002;2021-12-12
1001;2021-12-13
1001;2021-12-14
1001;2021-12-16
1002;2021-12-16
1001;2021-12-19
1002;2021-12-17
1001;2021-12-20

2、建表和加载数据

create table if not exists test3(
id int,
dt string
)row format delimited fields terminated by ";";


load data local inpath '/opt/test/t3.txt' overwrite into table test3;

3、分析

第1题我们做过连续问题,我们使用的等差数列的概念,即如果连续他们的间隔是相等的,但是本题是间隔连续,它不是完全连续,它允许间隔不一样,即在我设置的值内就算连续,比如

设置间隔小于三
10 11 13 15 16  前后两个数的间隔小于三,所以这五个数字连续
21 25 29 前后间隔25和21不小于三,25和29也不小于三,所以这三个数字不连续

方法一:等差法

        1、先分组排序

1001 2021-12-13 1
1001 2021-12-1
  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值