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 解决问题所使用的知 ...
随机推荐
- Activity(活动)生命周期(1)--返回栈
Android是使用任务(task)来管理活动的,一个任务就是一组存放在栈里的活动的集合,这个栈也被称为返回栈(Back stack).栈是一种后进先出的数据结构,在默认情况下,每当我们启动了一个新的 ...
- Educational Codeforces Round 8 A. Tennis Tournament 暴力
A. Tennis Tournament 题目连接: http://www.codeforces.com/contest/628/problem/A Description A tennis tour ...
- (转) Unity3D常用代码收集总结
//创建一个名为"Player"的游戏物体 //并给他添加刚体和立方体碰撞器. player=new GameObject("Player"); player. ...
- HDU 4638 Group (2013多校4 1007 离线处理+树状数组)
Group Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- #!/usr/bin/env在脚本中的作用
在linux的一些脚本,需在开头一行指定脚本的解释程序,如: #!/usr/bin/env bash #!/usr/bin/bash #!/usr/bin/env python 告诉操作系统执行这个 ...
- mydate97的时间格式设置
<script type="text/javascript" src="./WdatePicker.js"></script> < ...
- 过滤xss攻击和sql注入函数
/**+----------------------------------------------------------* The goal of this function is to be a ...
- lumisoft会将eml后缀格式的附件给解析成文本,这里保存成文件
MIME_Entity[] attachments = mime.Attachments; foreach (MIME_Entity entity in attachments) { string f ...
- TensorFlow------TFRecords的分析与存储实例
TensorFlow------TFRecords的分析与存储实例: import os import tensorflow as tf # 定义cifar的数据等命令行参数 FLAGS = tf.a ...
- CCControlExtension/CCControlButton
#ifndef __CCCONTROL_BUTTON_H__ #define __CCCONTROL_BUTTON_H__ #include "CCControl.h" #incl ...