Hive_基于Hive的网站日志分析

文章目录12
摘要由CSDN通过智能技术生成

概述

本文将基于Hive数据仓库工具对一份网站日志进行数据分析,包括分析IP地址。包括在插入数据时使用正则表达式对日志文件进行预处理、利用UDF进行数据清洗、使用ORC格式存储和SNAPPY压缩等。

1. 引出需要进行数据预处理的必要性

  • 原日志文件的字段信息统计如下,总共11个字段:
    在这里插入图片描述

  • 日志文件中信息展示:

    "27.38.5.159" 
    "-" 
    "31/Aug/2015:00:04:37 +0800" 
    "GET /course/view.php?id=27 HTTP/1.1" 
    "303" 
    "440" 
    - 
    "http://www.ibeifeng.com/user.php?act=mycourse" 
    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36" 
    "-" 
    "learn.ibeifeng.com"
    
  • 正常创建表的操作

    // 建表,以空格划分字段
    create table IF NOT EXISTS default.bf_log_src (
    remote_addr string,
    remote_user string,
    time_local string,
    request string,
    status string,
    body_bytes_sent string,
    request_body string,
    http_referer string,
    http_user_agent string,
    http_x_forwarded_for string,
    host string
    )
    ROW FORMAT DELIMITED FIELDS TERMINATED BY ' '
    stored as textfile ;
    // 载入数据
    load data local inpath '/opt/datas/moodle.ibeifeng.access.log' into table bf_log_src ;
    // 查看表结构
    desc formatted bf_log_src;
    // 查询行数
    select count(*) from bf_log_src ;
    // 查看前5行
    select * from  bf_log_src limit 5 ;
    
  • 发现问题
    通过select * from bf_log_src limit 5 ;之后会发现,表里并没有正常显示日志文件里的11个字段的值,而是只有前面8 个字段,后面字段丢失了
    仔细观察日志文件信息,可以发现有些字段中本身存在空格

  • 解决问题
    推荐的解决问题方式是:利用正则表示式过滤。当然,数据预处理也可以借助Python脚本,可以参照基于Python预处理、用Hive对movielens数据集进行分析

2. 使用RegexSerDe处理apache或者ngnix日志文件

  • Apache官网对日志文件的处理示例(示例中的正则表达是有误的)
CREATE TABLE apachelog (
  host STRING,
  identity STRING,
  user STRING,
  time STRING,
  request STRING,
  status STRING,
  size STRING,
  referer STRING,
  agent STRING)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
  "input.regex" = "([^]*) ([^]*)
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值