博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hive 提取用户第一次浏览/购买 某商品的 时间
阅读量:6260 次
发布时间:2019-06-22

本文共 2054 字,大约阅读时间需要 6 分钟。

Hive虽然强大,但是我们遇到的业务需求必定是千奇百怪的。

 

 在做日志解析的时候,我们会遇到访客,和访次的概念。

对于在2个小时之内的访问,我们认为是访问一次,对于两个小时之外的访问,我们认定是再次访问。

也就是是说,最新一次访问,与上一次访问之间间隔超过2个小时,则算是第二次访问。

用Hive来做过滤。

 

理一下思路:

select cookie_id, min(visit_time)

from web_log

group by cookie_id

用上面的计算来求出每个Cookie的第一次访问。

然后把这个访客的第一次访问的数据清理出来

 

select *

from web_log a

left outer join (

select cookie_id, min(visit_time) first_visit

from web_log

group by cookie_id

) b

on a.cookie_id = b.cookie_id

where a.visit_time > first_visit + 2 hours

 

这样就取出了一些第二次访问的客户数据了。

重复5-6次。

这样就可以计算出到底有多少防次访问了网站。

虽然不一定是最优解,不知道还有没有更好的办法呢??

 

想到一个方法,在Reduce阶段,用Distribute By cookie_id。

然后使用Python脚本进行编程。

取一条登陆记录,取其访问的时间。用变量保存。

然后再取一条记录,

如果新的记录的访问时间与上一次的访问记录相差2个小时,则输出上一条记录。

如果在2个小时之内,更新变量,不输出,继续访问。这样就像是个游标一样处理数据。

 

最后将输出格式为 cookie_id,first_visit_time,last_visit_time这样的格式,每一条这样的记录作为一次的访问。这一次访问包含N次请求。

 

http://dacoolbaby.iteye.com/blog/1824977

 

同样,对于商品第一次浏览的时间统计:

--- 先根据规则购买用户的订单表,得到用户购买某些三级品类的订单时间set hive.exec.parallel=true;set mapreduce.job.split.metainfo.maxsize=-1;drop table if exists dev.dev_jypt_jiazhuang_rule_user_all_buy;create table if not exists dev.dev_jypt_jiazhuang_rule_user_all_buyasselect * from dev.jiazhuang_user_rule_buy_order_table_15_v2where    item_third_cate_cd in     ('878','753','751','13690','760','898',	'870','1278','13691','13298','745','13117',	'880','1300','749','14421','12394','758',	'9934','9906','9939','9915','9904','9933',	'4952','9863','9916','9931','9911','11961',	'9910','9940','1629','9933','9912','1631')--- 根据规则用户购买某些三级品类的订单时间,得出用规则户购买某个三级品类的最早时间drop table if exists dev.dev_jypt_jiazhuang_rule_user_first_buy;create table if not exists dev.dev_jypt_jiazhuang_rule_user_first_buyasselect    user_log_acct,	-- sale_ord_id,	-- parent_sale_ord_id,	-- brand_cd,	brandname,	item_third_cate_cd,	item_third_cate_name,	-- item_sku_id,	-- sale_qtty,	-- after_prefr_amount,	-- rev_addr_province_id,	-- rev_addr_city_id,	-- rev_addr_county_id,    min(sale_ord_tm) user_first_buy_tmfrom    dev.dev_jypt_jiazhuang_rule_user_all_buygroup by    user_log_acct,    brandname,    item_third_cate_cd,    item_third_cate_name

  

 

 
 

转载地址:http://ilqsa.baihongyu.com/

你可能感兴趣的文章
html5-web本地存储
查看>>
CentOS 6.5 安装 Redis 执行 make #error "Newer version of jemalloc required"
查看>>
12.遍历二叉树与二叉树的建立
查看>>
Delphi 关键字详解[整理于 "橙子" 的帖子]
查看>>
Session的配置
查看>>
DropDownList中显示无限级树形结构
查看>>
光学字符识别引擎 Tesseract-ocr 安装过程
查看>>
定时备份windows机器上的文件到linux服务器上的操作梳理(rsync)
查看>>
MOSS程序中如何发Mail?
查看>>
错误:”未能加载文件或程序集“System.Web.Mvc, Version=2.0.0.0” 解决方法
查看>>
jQuery之post方法
查看>>
[LeetCode] Binary Tree Postorder Traversal
查看>>
js时间加减
查看>>
【易语言学习】Day1
查看>>
mapreduce中控制mapper的数量
查看>>
JS~jwPlayer为js预留的回调方法大总结
查看>>
wpa_supplicant是什么?
查看>>
ElasticSearch 攻略(三)概念认识
查看>>
第 19 章 MySQL Server
查看>>
Python Set Literals
查看>>