Web日志mapreduce预处理清洗

  

WEB访问日志

  <人力资源/>   

即指用户访问网站时的所有访问,浏览,点击行为数据。比如点击了哪一个链接,在哪个网页停留时间最多,采用了哪个搜索项,总体浏览时间等。而所有这些信息都可被保存在网站日志中。通过分析这些数据,可以获知许多对网站运营至关重要的信息。采集的数据越全面,分析就能越精准。

  <人力资源/>   
      <李>   

    <强>日志的生成渠道:
    1。是网站的web服务器所记录的web访问日志
    2。是通过在页面嵌入自定义的js代码来获取用户的所有访问行为(比如鼠标悬停的位置,点击的页面组件等),然后通过ajax请求到后台记录日志;这种方式所能采集的信息最全面;
    3。通过在页面上埋点1像素的图片,将相关页面访问信息请求到后台记录日志;

      李   <李> <>强日志数据内容详述:
    在实际操作中,有以下几个方面的数据可以被采集:
    1。访客的系统属性特征。比如所采用的操作系统,浏览器,域名和访问速度等。
    2。访问特征。包括停留时间,点击的URL等。
    3。来源特征。包括网络内容信息类型,内容分类和来访URL等。   
  <人力资源/>   
      <李> <>强以网站点击日志为例,其点击日志格式如下:   
     <代码类=" language-js "> 194.237.142.21——[18日/0000年9月/2013:06:49:18 +]”得到/wp-content/上传/2013/07/rstudio-git3。png HTTP/1.1“304 0”——Mozilla/4.0(兼容。)”
      183.49.46.228——[18日/0000年9月/2013:06:49:23 +]”——“400 0”——““-”
      163.177.71.12——[18日/0000年9月/2013:06:49:33 +]“头/HTTP/1.1”200年20”——““DNSPod-Monitor/1.0” 
      
  <人力资源/>   
      <李> <>强用于生成点击流的访问日志表   
           时间戳   IP地址   饼干   会话   请求网址   款               2012-01-01 12:31:12   101.0.0.1   User01   S001//?   somesite.com         2012-01-01 12:31:16   201.0.0.2   User02   S002//?   -         2012-01-01 12:33:06   101.0.0.2   User03   S002/b/?   baidu.com         2012-01-01 15:16:39   234.0.0.3   User01   S003/c/?   google.com         2012-01-01 15:17:11   101.0.0.1   User01   S004/d/?c/?         2012-01-01 15:19:23   101.0.0.1   User01   S004/e/?d/....            <人力资源/>   

至此开始正文,数据预处理

  <人力资源/>   
      <李>   
    主要目的:
      李   <李>   李   <李>   
        <李>过滤”不合规”数据李   
      李   <李> 2。格式转换和规整李   <李>   

    3。根据后续的统计需求,过滤分离出各种不同主题(不同栏目路径)的基础数据

      李   <李>   
    实现方式:
      李   <李>   李   <李> <>强开发一个先生程序WeblogPreProcess   
  <人力资源/>   
      <李>   

    第一个WebLogBean。java程序,定义日志格式

      李   
  
 <代码>/* *
  *对接外部数据的层,表结构定义最好跟外部数据源保持一致
  *术语:贴源表
  * @author
  *
  */公共类WebLogBean实现可写的{
  
  私人布尔有效=true;//判断数据是否合法
  私人字符串remote_addr;//记录客户端的ip地址
  私人remote_user的字符串;//记录客户端用户名称,忽略属性“-”
  私人字符串time_local;//记录访问时间与时区
  私人请求字符串;//记录请求的url与http协议
  私人弦状态;//记录请求状态,成功是200
  私人字符串body_bytes_sent;//记录发送给客户端文件主体内容大小
  私人字符串http_referer;//用来记录从那个页面链接访问过来的
  私人字符串http_user_agent;//记录客户浏览器的相关信息
  
  公共空集(remote_user remote_addr布尔有效,字符串,字符串,字符串time_local,请求的字符串,字符串,字符串body_bytes_sent http_referer的字符串,字符串http_user_agent) {
  这一点。有效=有效;
  这一点。remote_addr=remote_addr;
  这一点。remote_user=remote_user;
  这一点。time_local=time_local;
  这一点。请求=请求;
  这一点。状态=状态;
  这一点。body_bytes_sent=body_bytes_sent;
  这一点。http_referer=http_referer;
  这一点。http_user_agent=http_user_agent;
  }
  
  公共字符串getRemote_addr () {
  返回remote_addr;
  }
  
  公共空间setRemote_addr(字符串remote_addr) {
  这一点。remote_addr=remote_addr;
  }
  
  公共字符串getRemote_user () {
  返回remote_user;
  }
  
  公共空间setRemote_user(字符串remote_user) {
  这一点。remote_user=remote_user;
  }
  
  公共字符串getTime_local () {
  返回this.time_local;
  }
  
  公共空间setTime_local(字符串time_local) {
  这一点。time_local=time_local;
  }
  
  公共字符串getRequest () {
  返回请求;
  }
  
  公共空间setRequest(字符串请求){
  这一点。请求=请求;
  }
  
  公共字符串getStatus () {
  返回状态;
  }
  
  公共空间setStatus(字符串状态){
  这一点。状态=状态;
  }
  
  公共字符串getBody_bytes_sent () {
  返回body_bytes_sent;
  }
  
  公共空间setBody_bytes_sent(字符串body_bytes_sent) {
  这一点。body_bytes_sent=body_bytes_sent;
  }
  
  公共字符串getHttp_referer () {
  返回http_referer;
  }
  
  公共空间setHttp_referer(字符串http_referer) {
  这一点。http_referer=http_referer;
  }
  
  公共字符串getHttp_user_agent () {
  返回http_user_agent;
  }
  
  公共空间setHttp_user_agent(字符串http_user_agent) {
  这一点。http_user_agent=http_user_agent;
  }
  
  公共布尔isValid () {
  返回有效;
  }
  
  公共空间setValid(布尔有效){
  这一点。有效=有效;
  }
  
  @Override
  公共字符串toString () {
  StringBuilder某人=new StringBuilder ();
  sb.append (this.valid);
  sb.append (“\ 001”) .append (this.getRemote_addr ());
  sb.append (“\ 001”) .append (this.getRemote_user ());
  sb.append (“\ 001”) .append (this.getTime_local ());
  sb.append (“\ 001”) .append (this.getRequest ());
  sb.append (“\ 001”) .append (this.getStatus ());
  sb.append (“\ 001”) .append (this.getBody_bytes_sent ());
  sb.append (“\ 001”) .append (this.getHttp_referer ());
  sb.append (“\ 001”) .append (this.getHttp_user_agent ());
  返回sb.toString ();
  }
  
  @Override
  公共空间readFields (DataInput)抛出IOException {
  这一点。有效=in.readBoolean ();
  这一点。remote_addr=in.readUTF ();
  这一点。remote_user=in.readUTF ();
  这一点。time_local=in.readUTF ();
  这一点。请求=in.readUTF ();
  这一点。状态=in.readUTF ();
  这一点。body_bytes_sent=in.readUTF ();
  这一点。http_referer=in.readUTF ();
  这一点。http_user_agent=in.readUTF ();
  
  }
  
  @Override
  公共空间写(DataOutput)抛出IOException {
  out.writeBoolean (this.valid);
  out.writeUTF (null==remote_addr ?”“: remote_addr);
  out.writeUTF (null==remote_user ?”“: remote_user);
  out.writeUTF (null==time_local ?”“: time_local);
  out.writeUTF (null==请求?”“:请求);
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null

Web日志mapreduce预处理清洗