标签:
这里用到的nginx日志是网站的访问日志,比如:
这条日志里面含有9列(为了展示的美观,我在这里面加了换行符),每列之间是用空格分割的,每列的含义分别是客户端访问IP、用户标示、用户、访问时间、请求页面、请求状态、返回文件的大小、跳转来源、浏览器UA。如果想用一般的方法解析这条日志的话有点困难。但是如果我们会正则表达式的话,去匹配这九列数据还是很简单的:
这样一来就可以匹配出每一列的值。而在Hive中我们是可以指定输入文件解析器(SerDe)的,并且在Hive中内置了一个org.apache.hadoop.hive.contrib.serde2.RegexSerDe正则解析器,我们可以直接使用它。所以整个建表语句可以这么写:
将日志放置到这个表的目录下,gz格式和未知压缩格式都可以直接被Hive解析。用下面语句可以查询出每小时访问量超过20的IP:
或者是一些其他的操作。
如果你对Bash比较熟悉的话,那你完全可以不用到Hive,直接用awk、sort等函数来实现,比如我想知道今天访问量比较多的IP并对他们进行排序,取前10条的语句可以这么写:
标签:
原文地址:http://www.cnblogs.com/thinkpad/p/5173673.html