大数据技术学习笔记之网站流量日志分析项目:数据仓库设计与etl模型建模4

一、回顾
    -》ETL
        -》功能:一般只有map task
            -》1数据过滤
                -》非法值
                -》字段个数
                -》字段合法性判断
                -》状态判断
            -》2解析补全
                -》ip地址
                -》user_agent的解析
            -》3数据格式化
                -》时间
                    simpledateformat
                    Stringutils
        -》MapReduce实现
            -》自定义数据类型
            -》解析工具类
            -》开发MapReduce模板
            
            
    -》面试题:
        源数据:        url         refere_url
        目标:            refere_url    url            next_url
        
        
        LEAD
            The number of rows to lead can optionally be specified. If the number of rows to lead is not specified, the lead is one row.
            Returns null when the lead for the current row extends beyond the end of the window.
        LAG
            The number of rows to lag can optionally be specified. If the number of rows to lag is not specified, the lag is one row.
            Returns null when the lag for the current row extends before the beginning of the window.
        
        1        url1        refere_url1
        2        url2        refere_url2
        3        url3        refere_url3

        
        select id,refere_url,url,lag(url,"") as next_url from test;
        
        1                refere_url1       url1            url2
        2                refere_url2       url2            url3
        3                refere_url3          url3            
        
        
二、pageview模型的构建
    -》ETL
        -》valid、ip、user_id、time、request、status、body_size、http_ref、user_agent
    -》pageview模型
        -》基于原先的九个字段的基础上(增加三个字段)
        -》session_id:用于唯一标识一个会话
            -》当前没有,在代码中模拟创建session_id
            -》同一个人访问,只要两条记录之间的时间不超时,sessionid相同
                -》怎么表示同一个人:ip来代替,实际工作中使用user_id
        -》step:步长,表示该条记录是该session中的第几步
            -》对session进行分组
            -》按照时间进行排序
        -》length:页面停留时长
            -》计算方式:下一个页面的访问时间 - 当前页面的访问时间 = 停留时长
            -》如果只有一个页面、最后一条访问的页面,给默认的访问时长
    -》MapReduce实现
        -》input:读ETL的输出
            输入:
                key:偏移量
                value:9个字段
        -》map
            输出:
                key:ip
                value:9个字段
        -》shuffle
        -》reduce
            -》输入:
                key:ip
                value:9个字段
            -》reduce
                -》对整个list进行排序:按照时间进行排序
                -》随机生成sessionid,并且生成步长
                -》时长:当前-前一个
        -》output
            9+3
    
        
三、visit模型:基于pageview构建
    统计每个session的
    -》sessionid
    -》ip
    -》起始时间:第一条记录的时间
    -》结束时间:最后一条记录的 时间
    -》进入页面:第一条记录的request
    -》离开页面:最后一条记录的request
    -》来源页面:第一条记录http_ref
    -》访问页数:步数最大值/集合长度
    
    -》MapReduce实现
        -》input:读pageview模型的输出
        -》map:
            key:sessionid
            value:pageview的输出格式
        -》reduce:
            -》对集合中所有value进行排序
            -》按照步长的大小进行排序
        
        

        
            
           
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值