zoukankan      html  css  js  c++  java
  • 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
    
    
    
    
    
    
        
    

      

     
     
  • 相关阅读:
    2020系统综合实践 第4次实践作业
    2020系统综合实践 第3次实践作业
    2020系统综合实践 第2次实践作业
    第1次实践作业
    Wireshark组 2019SDN大作业
    第04组 Beta版本演示
    转载:北大老师语录(2016年秋)
    康德哲学基本概念
    white album句子
    tex基础
  • 原文地址:https://www.cnblogs.com/Allen-rg/p/9373427.html
Copyright © 2011-2022 走看看