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

  

 
 

最新文章

  1. linux phpexcel导出后打不开
  2. 自然语言26_perplexity信息
  3. Java并发编程核心方法与框架-ExecutorService的使用
  4. CentOS6.5 安装Zookeeper集群
  5. [原创]大连sap vt 实习生面试经历
  6. UIcollectionView的使用(首页的搭建4)
  7. Javascript异步数据的同步处理方法
  8. webapi中的路由约束
  9. boost::pool 库速记
  10. Kafka~Linux环境下的部署
  11. 洛谷P3348 [ZJOI2016]大森林 [LCT]
  12. 爬虫下载校花网美女信息-lxml
  13. 移动端开发:使用jQuery Mobile还是Zepto
  14. Android app widget中实现跑马灯效果(非widget部件也实用)
  15. 第4章:YARN
  16. Mac OS X下的移动光标和文字编辑快捷键
  17. CentOS 6 网络设置
  18. Core中使用Hangfire
  19. MAC、MII、PHY的关系与区别
  20. loadrunner录制时web时,ie报安全证书问题

热门文章

  1. 【MySQL笔记】触发器,存储过程和函数
  2. iOS 日志管理异常捕获组件LFLogManager
  3. Integer引用类型问题
  4. 新浪微博(t.sina)简单授权代码及API测试
  5. NSLog 输出格式集合
  6. HDU 4886 TIANKENG’s restaurant(Ⅱ) hash+dfs
  7. iOS:对GCD中 同步、异步、并行、串行的见解
  8. 【转载】【Todo】银弹与我们的职业
  9. 一步一步学RenderMonkey(4)--点光源光照模型 【转】
  10. unity linear space时 photoshop blend的正确设置