hive 提取用户第一次浏览/购买 某商品的 时间
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_buy
as
select * from dev.jiazhuang_user_rule_buy_order_table_15_v2
where
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_buy
as
select
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_tm
from
dev.dev_jypt_jiazhuang_rule_user_all_buy
group by
user_log_acct,
brandname,
item_third_cate_cd,
item_third_cate_name
hive 提取用户第一次浏览/购买 某商品的 时间的更多相关文章
- Cookie小案例-----记住浏览过的商品记录
Cookie小案例------记住浏览过的商品记录 我们知道,这个功能在电商项目中非经常见.这里处理请求和页面显示都是由servlet实现,主要是为了体现cookie的作用, 实现功能例如以下: 1, ...
- cookie记录用户的浏览商品的路径
在电子商务的网站中,经常要记录用户的浏览路径,以判断用户到底对哪些商品感兴趣,或者哪些商品之间存在关联. 下面将使用cookie记录用户的浏览过的历史页面.该网站将每个页面的标题保存在该页面的$TIT ...
- <项目><day11>查看用户浏览过的商品
<项目>查看用户浏览过的商品 1.创建一个entity包储存实体对象 1.1创建一个Product的类存储实体对象 对象具有以下属性,并添加set和get方法,含参和不含参的构造方法,to ...
- 编写Java程序,用户在网上购买商品(good),当用户买了一本书(book)、一顶帽子(hat)或者买了一双鞋子(shoe),卖家就会通过物流将商品邮寄给用户,使用简单工厂模式模拟这一过程。
查看本章节 查看作业目录 需求说明: 编写Java程序,用户在网上购买商品(good),当用户买了一本书(book).一顶帽子(hat)或者买了一双鞋子(shoe),卖家就会通过物流将商品邮寄给用户, ...
- Web---Cookie技术(显示用户上次登录的时间、显示用户最近浏览的若干个图片(按比例缩放))
本章博客讲解: 1.Cookie基本用法演示 2.演示Cookie的访问权限 3.演示Cookie的删除 4.利用Cookie显示用户上次登录的时间 5.利用Cookie技术显示用户最近浏览的若干个图 ...
- php中如何实现网上商城用户历史浏览记录的代码
/如是COOKIE 里面不为空,则往里面增加一个商品ID if (!empty($_COOKIE['SHOP']['history'])){ //取得COOKIE里面的值,并用逗号把它切割成一个数组 ...
- bookStore第三篇【用户模块、购买模块、订单模块】
用户模块 要登陆后才能购买,因此我们先写购买模块 设计实体 private String id; private String username; private String password; p ...
- app内购提示,您已购买此商品,但未下载
出现这样的问题,是支付没有finish造成的,一般在支付过程中断网了,下次再购买同一商品的时候就会出现这样的问题, 解决办法,在点击购买的时候判断支付队列中是否有为finish的商品,若有,则进行处理 ...
- js记录用户行为浏览记录和停留时间(转)
演示地址:http://weber.pub/demo/160902/test.html 测试源码下载:http://pan.baidu.com/s/1nvPKbSP 密码:r147 解决问题所使用的知 ...
随机推荐
- ES6中的一些新特性
这两个命令是ES6的新语法知识.这两个新的特性解决了ES6中的一些小的"bug"问题.其中包含一些知识:块级作用域.let命令.const命令.全局对象的属性.Google V8引 ...
- hihocoder 1288 : Font Size (微软2016校园招聘4月在线笔试)
hihocoder 1288 笔试第一道..wa了好几次,也是无语..hihocoder错了不会告诉你失败的时候的测试集,这样有时候就很烦.. 遍历所有的字体,从min(w,h)开始逐渐变小开始遍历. ...
- 在MEF中实现延迟加载部件
在MEF的宿主中,当我们通过Import声明导入的对象时,组装(Compose)的时候会创建该对象.例如: interface ILogger { void Log(string ...
- Delphi 中ASSERT用法
http://blog.csdn.net/dongyonggan/article/details/5780979 用法:ASSERT(表达式) 如果为假,ASSERT会产生一个EASSERTIONFA ...
- Matlab中如何读取.dat文件
处理movielens1M数据集 中间有个双冒号,直接用load的只读取第一列,这时候我们可以用dlmread(中间是l不是i),如下图,只需要提取1 3 5列就好了.
- 基于tiny4412的Linux内核移植 -- eMMC驱动移植(六)
作者信息 作者: 彭东林 邮箱:pengdonglin137@163.com QQ:405728433 平台简介 开发板:tiny4412ADK + S700 + 4GB Flash 要移植的内核版本 ...
- 新公司官网项目优化实践(Vue)
入职后接手website-html和website-mobile项目,发现项目加载速度不太理想,于是结合自己之前的经验对项目做了优化.此篇文章主要记录这次优化详情. 原始项目:开发环境:website ...
- CDK上安装kube-dashboard
首先把addon的代码下载下来 git clone https://github.com/minishift/minishift-addons 然后进入相应的目录,运行 ericdeMacBook-P ...
- mysql将字符串字段转为数字排序或比大小
SELECT * FROM Student WHERE 1 = 1 ORDER BY -ID DESC ; SELECT * FROM Student WHERE 1 = 1 ORDER BY (ID ...
- http://www.ruanyifeng.com/blog/2013/07/gpg.html
http://www.ruanyifeng.com/blog/2013/07/gpg.html