zoukankan      html  css  js  c++  java
  • 利用Hive分析nginx日志

    这里用到的nginx日志是网站的访问日志,比如日志格式:

    180.173.250.74 - - [08/Jan/2015:12:38:08 +0800] "GET /avatar/xxx.png HTTP/1.1" 200 968  "http://www.iteblog.com/archives/994" 

    这条日志里面含有9列(为了展示的美观,我在这里面加了换行符),每列之间是用空格分割的,每列的含义分别是客户端访问IP、用户标示、用户、访问时间、请求页面(测试简写)

    这样一来就可以匹配出每一列的值。而在Hive中我们是可以指定输入文件解析器(SerDe)的,并且在Hive中内置了一个org.apache.hadoop.hive.contrib.serde2.RegexSerDe正则解析器,我们可以直接使用它。所以整个建表语句可以这么写:

    CREATE TABLE yyy_test.logs(
        host STRING,
       identity STRING,
       user STRING,
       time STRING,
       request STRING)
    ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
    WITH SERDEPROPERTIES (
        'input.regex' = '(\d+\.\d+\.\d+\.\d+)\s(-|[0-9]*)\s(-|[0-9]*)\s\[(.*)\]\s\"(.*)\"',
        'output.format.string' = '%1$s %2$s %3$s %4$s %5$s'
    )
    STORED AS TEXTFILE;

    导入数据

    load data inpath '/user/compass/yueyuanyang/tmp/4' into table yyy_test.logs

    查看数据

    select * from yyy_test.logs;

    结果展示

    例二:

    采用简单的空格分割数据

    数据格式:

    180.173.250.74 - - [08/Jan/2015:12:38:08 +0800] "GET /avatar/xxx.png HTTP/1.1" 200 968 "http://www.iteblog.com/archives/994" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)Chrome/34.0.1847.131 Safari/537.36"

    建表语句:

    CREATE TABLE yyy_test.logs(
        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.contrib.serde2.RegexSerDe'
    WITH SERDEPROPERTIES (
       'input.regex' = '([^ ]*)\s([^ ]*)\s([^ ]*)\s(\[.*\])\s(\".*?\")\s(-|[0-9]*)\s(-|[0-9]*)\s(\".*?\")\s(\".*?\")',
       'output.format.string' = '%1$s %2$s %3$s %4$s %5$s %6$s %7$s %8$s %9$s'
    )
    STORED AS TEXTFILE;

  • 相关阅读:
    hutool 糊涂
    java 连接 Redis 工具
    生成6位验证码
    @FeignClient定义冲突解决
    Seate分布式事务解决方案
    算法——最小生成树的关键边和伪关键边
    《Kubernetes权威指南》读书笔记
    Docker——容器卷管理
    算法——课程表 II(有向图拓扑排序)
    Docker——网络
  • 原文地址:https://www.cnblogs.com/yyy-blog/p/6925536.html
Copyright © 2011-2022 走看看