產品汪與程序猿的愛恨糾葛,有了它一切都不是事

世界上最遙遠的距離,不是生與死,不是我在你面前你殊不知道我愛你,而是我求你幫我跑個數據,你卻裝瘋賣傻。web


不一樣的知識體系、思惟能力,註定了程序猿和產品汪的相愛相殺。那麼歸根到底,問題癥結究竟在哪呢?數據~正則表達式


打破傳統,「據」給力

拿數據處理來講,以字符界面控制檯爲主的傳統Hadoop數據分析,雖被你們普遍使用,但因爲其數據處理較爲繁瑣,在商務應用上並不實用。數據庫



而Hue爲Hadoop數據分析提供了圖形界面系統,僅僅使用瀏覽器便可以在Hadoop平臺上導入數據、處理數據以及分析數據,瞬間高大上了很多,有沒有。apache


網站日誌分析,「據」高效

衆所周之,網站的日誌包含用戶訪問信息, 產品汪可經過日誌分析瞭解網站的訪問量、網頁訪問次數、網頁訪問人數、頻繁訪問時段等等,以便獲取用戶行爲以優化網站的商業價值。瀏覽器


因爲網站天天會產生海量的日誌,產品汪之前不得不求助於程序猿寫代碼跑Hadoop做業來分析結果。而集成Hive和Hue的百度MapReduce(簡稱BMR)爲用戶提供了友好的界面,僅經過SQL語句產品汪本身就能分析海量日誌,大大提升效率。同時,簡單的操做模式也下降了使用門檻。微信


一站式Hue訪問,「據」高效

關於使用問題,只需登陸百度開放雲管理控制檯並建立集羣,在軟件配置設置欄內添加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源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索