使用Hive的正则解析器RegexSerDe分析nginx日志

网友投稿 251 2022-11-23

使用Hive的正则解析器RegexSerDe分析nginx日志

1、环境: hadoop-2.6.0 + apache-hive-1.2.0-bin   2、使用Hive分析nginx日志,站点的訪问日志部分内容为: cat /home/hadoop/hivetestdata/nginx.txt192.168.1.128 - - [09/Jan/2015:12:38:08 +0800] "GET /avatar/helloworld.png HTTP/1.1" 200 1521  "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36"183.60.212.153 - - [19/Feb/2015:10:23:29 +0800] "GET /o2o/media.html?menu=3 HTTP/1.1" 200 16691 "-" "Mozilla/5.0 (compatible; EasouSpider; +]*) ([^ ]*) ([^ ]*) (\[.*\]) (\".*?\") (-|[0-9]*) (-|[0-9]*) (\".*?\") (\".*?\")于此同一时候我们能够在Hive中指定解析文件的序列化和反序列化解析器(SerDe),而且在Hive中内置了一个org.apache.hadoop.hive.serde2.RegexSerDe正则解析器,我们能够直接使用它。3、建表语句   CREATE TABLE logs(host STRING,identity STRING,username 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" = "([^ ]*) ([^ ]*) ([^ ]*) (\\[.*\\]) (\".*?   \") (-|[0-9]*) (-|[0-9]*) (\".*?\") (\".*? \")","output.format.string" = "%1$s %2$s %3$s %4$s %5$s %6$s %7$s %8$s %9$s")STORED AS TEXTFILE;4、载入数据:   load data local inpath '/home/hadoop/hivetestdata/nginx.txt' into table logs;  查询每小时的訪问量超过100的IP地址:   select substring(time, 2, 14) datetime ,host, count(*) as count from logs group by substring(time, 2, 14), host having count > 100  sort by datetime, count;

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SpringBoot事件发布和监听详解
下一篇:多点快速采集系统中信号可靠转贮研究
相关文章

 发表评论

暂时没有评论,来抢沙发吧~