一、回顾
-》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进行排序
-》按照步长的大小进行排序
-》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进行排序
-》按照步长的大小进行排序