世界上最遥远的距离,不是生与死,不是我在你面前你殊不知道我爱你,而是我求你帮我跑个数据,你却装疯卖傻。web
不一样的知识体系、思惟能力,注定了程序猿和产品汪的相爱相杀。那么归根到底,问题症结究竟在哪呢?数据~正则表达式
拿数据处理来讲,以字符界面控制台为主的传统Hadoop数据分析,虽被你们普遍使用,但因为其数据处理较为繁琐,在商务应用上并不实用。数据库
而Hue为Hadoop数据分析提供了图形界面系统,仅仅使用浏览器便可以在Hadoop平台上导入数据、处理数据以及分析数据,瞬间高大上了很多,有没有。apache
众所周之,网站的日志包含用户访问信息, 产品汪可经过日志分析了解网站的访问量、网页访问次数、网页访问人数、频繁访问时段等等,以便获取用户行为以优化网站的商业价值。浏览器
因为网站天天会产生海量的日志,产品汪之前不得不求助于程序猿写代码跑Hadoop做业来分析结果。而集成Hive和Hue的百度MapReduce(简称BMR)为用户提供了友好的界面,仅经过SQL语句产品汪本身就能分析海量日志,大大提升效率。同时,简单的操做模式也下降了使用门槛。微信
关于使用问题,只需登陆百度开放云管理控制台并建立集群,在软件配置设置栏内添加Hive和Hue应用,不出几分钟BMR集群即可建立完毕。cookie
相较那些须要使用SSH Tunnel登陆的老旧方法,BMR近期推出了一站式Hue访问,在集群详情页内能够找到Hue的网址,输入集群用户名密码便可登陆。编辑器
登陆Hue之后能够借助File Browser上传Nginx日志,示例数据能够从https://bmr-public-data.bj.bcebos.com/logs/accesslog-10k.log下载,简单起见就放在/user/root下面:oop
在分析以前,首先须要根据网站日志创建一张Hive表。在Hue菜单栏中选择查询编辑器、Hive,并输入如下SQL语句:优化
DROP TABLE IF EXISTS access_logs;
CREATE EXTERNAL TABLE access_logs (
remote_addr STRING comment 'client IP',
time_local STRING comment 'access time',
request STRING comment 'request URL',
status STRING comment 'HTTP status',
body_bytes_sent STRING comment 'size of response body',
http_referer STRING comment 'referer',
http_cookie STRING comment 'cookies',
remote_user STRING comment 'client name',
http_user_agent STRING comment 'client browser info',
request_time STRING comment 'consumed time of handling request',
host STRING comment 'server host',
msec STRING comment 'consumed time of writing logs'
)
COMMENT 'web access logs'
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
"input.regex" = "([0-9\\.]+) - \\[([^\\]]+)\\] \"([^\"]*)\" ([\\d]+) ([\\d]*) \"([^\"]*)\" \"([^\"]*)\" ([\\S]+) \"([^\"]*)\" ([0-9\\.]+) ([\\S]+) ([0-9\\.]+)"
)
STORED AS TEXTFILE
LOCATION "/user/root";
这样,Hive会创建access_logs表,而后经过正则表达式来解析日志文件。注意LOCATION须要跟上传日志文件所对应,好比/user/root。固然,BMR还支持从对象存储BOS上读取数据,暂且不提。
成功建立access_logs表以后,即可以在Hive Editor左侧的辅助菜单中刷新数据库,找到access_logs表并预览示例数据:
定了表以后,即可以进行查询了。好比,如下语句能够统计网页请求的结果:
SELECT status, count(1)
FROM access_logs
GROUP BY status
切换到图表页,还能够以饼图的形式可视化数据:
使用下面的语句能够了解哪一个时段网页访问量最大:
SELECT hour(from_unixtime(unix_timestamp(time_local, 'dd/MMMM/yyyy:HH:mm:ss Z'))) AS hour, count(1) AS pv
FROM access_logs
GROUP BY hour(from_unixtime(unix_timestamp(time_local, 'dd/MMMM/yyyy:HH:mm:ss Z')))
切换到图表页,能够以柱状图来可视化结果:
可见大量的访问在晚上九点,是否是须要在这段时间多投放一些广告呢?
此外,Hue还可以轻松制做地图可视化效果:
这里须要IP地址到地理位置信息的映射等转换,数据库的完备性影响到结果的精确性,欲了解详情,请联系bce@baidu.com。
总之,经过百度MapReduce提供的一站式Hue的帮助,用Hadoop作数据分析也成了轻松愉快的事情,产品汪不再用看程序猿的脸色啦!
本文分享自微信公众号 - 百度智能云(baidu_cloud)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。