Hive中如何统计用户三个月或者以上的行为数据
客户画像中,标签开发经常会有类似下面维度的标签,那该如何处理呢?
- 客户最近三个月点击app**模块的活跃时长
- 客户最近三个月点击app**模块的活跃次数
- 客户最近三个月点击app**模块的活跃天数
常规方法,以及存在的问题
最直接的办法就是在计算出当天数据之后,然后一次性加在90天的数据,goup by做相应的聚合操作,在用户量不是很大的情况下,这样做事没有问题的,
但是假设一天的活跃用户为百万级,当天数据的表中,我们假设每个用户在二十个不同大小的我们关心的模块活跃过,那么一个用户在这个表中就会有20条数据,这样总数据量就会在亿级。这样,如果还是按照以前的办法就会加在月接近百亿条数据,这样跑起来不仅会耗费太多的资源,出现数据倾斜,而且运行时间会过长,影响整个架构中任务运行的进度。
优化方法
建立一个日任务A,每天运行计算最近一个月的数据(如果数据量过大,可以考虑15天,或者更小的粒度);
建立一个日任务B,从任务A中取数,取三天的分区,做聚合计算。
让我们来举个例子
标签维度:用户最近三个月访问APP“我的”按钮的次数
底层日任务b,统计出标签 用户当天点击“我的”按钮的次数(app_mine_button_click_cnt_day),生成分区,从2018-12-01至2019-03-31
日任务A从任务b中取数, 统计出标签 用户最近一月点击“我的”按钮的次数 (app_mine_button_click_cnt_1month) 生成分区分区2019-01-01至2019-03-31
insert overwrite table A partition (day='date')
select phone_no
,sum(app_mine_button_click_cnt_day) as app_mine_button_click_cnt_1month
from b where day<='date' and day>date_sub('date',30) group by phone_no
日任务B从任务A中取数,统计出标签 用户最近三个月访问APP“我的”按钮的次数(app_mine_button_click_cnt_3month),只用取三个分区的数据就可以了。例如跑2019-03-31这一个的数据是
insert overwrite table B partition (day='date')
select phone_no
,sum(app_mine_button_click_cnt_1month) app_mine_button_click_cnt_3month
from A where day='date' or day=date_sub('date',30) or day=date_sub('date',60) group by phone_no;
Hive中如何统计用户三个月或者以上的行为数据相关推荐
- sql中如何统计各种零件的总数量_数据蒋堂 | SQL是描述性语言?
作者:蒋步星 来源:数据蒋堂 本文共1200字,建议阅读8分钟.用SQL写代码时一般不用再关心变量.循环的具体动作,但要操心表.字段这些概念上的计算过程. 我们在学习SQL时,常常会看到这样的论调:S ...
- HIVE面试题原理详解 统计用户连续交易的总额、连续登陆天数、连续登陆开始和结束时间、间隔天数
HIVE面试题原理详解 统计用户连续交易的总额.连续登陆天数.连续登陆开始和结束时间.间隔天数 友情提示 创建数据表 添加数据 流程图 第一步分析(子表a) 第二步分析(子表b) 第三步分析(子表c) ...
- hive中统计某列数组的元素个数
hive中统计某列数组的元素个数 可以统计列的数量 SELECT distinct_id,sum(size(split(itemid_list,","))) FROM t_item ...
- python 异常处理编程 编写程序,统计用户输入的内容中,分别包含多少个英文字母字符、数字字符、空格、其他字符。
python 异常处理编程 第二题 要求 编写程序,统计用户输入的内容中,分别包含多少个英文字母字符.数字字符.空格.其他字符. 示例 代码 方法一 s=input('请输入一行文字:\n')eN,n ...
- hive:统计hive中所有表的大小和创建时间
目的:获取hive中所有表的创建时间和表大小 本文给出了一个既可以统计hive中非分区表也可以统计分区表的表大小的方式. 由于业务上没有针对分区数据统计的需求,所以可以使用此种方式统计. 如果业务需要 ...
- 编程,统计用户输入的一串英文文本中各单词的出现频率。
编程,统计用户输入的一串英文文本中各单词的出现频率.注意: (1)", . ? !"等标点符号也作为分割单词的依据. (2)去除of.a.an.the这些无意义词语. (3)单词不 ...
- hive 中某个字段等于0_快速了解hive
作者丨HappyMint 文章选摘:大数据与人工智能 这是作者的第7篇文章 本文主要针对从事大数据分析和架构相关工作,需要与hive打交道但目前对hive还没有进行深层次了解的小伙伴,希望本文会让你对 ...
- hive中groupby优化_Hive数据倾斜
Hive数据倾斜 Group By 中的计算均衡优化 1.Map端部分聚合 先看看下面这条SQL,由于用户的性别只有男和女两个值 (未知).如果没有map端的部分聚合优化,map直接把groupby_ ...
- hive中的分区表与视图
Hive主要由用户接口模块.驱动模型以及元数据存储模块3个模块组成: 用户接口模块 用户接口模块包括CLI.Hive网页接口(Hive Web Interface,HWI).JDBC.ODBC.T ...
最新文章
- Django+Bootstrap+Mysql 搭建个人博客(五)
- 解决启动不了VMware虚拟机以及VM升级到新的版本后出现黑屏的问题
- TestNG并行测试
- 参观中央财经大学机房安装centos6.4及优化小结
- VTK:图片之DotProduct
- ElasticSearch——学习笔记
- oracle中xml如何存储过程,oracle存储过程生成xml文件
- 网站前端组织冒泡事件
- 鸿蒙应用开发--应用生命周期
- 【老生谈算法】matlab实现小波分析源码——小波分析
- 计算机怎么查文件打印记录表,打印机历史记录
- C语言中基本数据类型-char介绍
- 常用的oracle时间计算
- Redis - 一个简单的抢红包小项目
- 标志设计中选择合适的字体
- 震动环境如何使用称重传感器
- 软件流程和管理(七):个人、激励和团队
- emc服务器装什么系统,EMC DD系统安装指南.pdf
- Windows命令之 -- Del 删除指定文件
- 使用Bmob遇到的坑与解决办法