世界上最遙遠的距離,不是生與死,不是我在你面前你殊不知道我愛你,而是我求你幫我跑個數據,你卻裝瘋賣傻。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源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。