利用pig分析cdn訪問日誌內指定時間段的url訪問次數

需求說明:

由於cdn收費是按照最高帶寬收費的,但是公司平臺平均使用cdn帶寬爲100M多,但是有幾個時間點的帶寬,突然漲到300M,但是不到5分鐘就回落下來了,但就是爲5分鐘的高出的帶寬,公司就要多付費用,不划算,所以要配合研發分析峯值左右前後5分鐘的url訪問次數,定位問題!


cdn流量圖如下:

wKioL1RTA66DqRavAAGSPt1IPvo698.jpg


目標:通過分析cdn日誌中10點整到10點50之間的url訪問次數,來判定故障源!


具體實現方式:



#以","爲分割符,加載日誌文件大排變量a

grunt> a = load '/user/hadoop/input/16456_2014102710_enclf.log'

>> using PigStorage(' ')

>> AS (a1,a2,a3,time,a5,a6,url,a8); 


#過濾一行日誌,只要time,和url列

grunt> b = foreach a generate time, url;


#只要時間是:10:40到10:50之間的行

grunt> b1 = filter b by time matches '.*2014:10:(40|41|42|43|44|45|46|47|48|49|50).*'; 


ps:下面的用的正則表達式(任選一個):

grunt> b1 = filter b by time matches '\\[27/Oct/2014:(10:4[1-9]):.*'; 


#過濾出url

grunt> b2 = foreach b1 generate url;


grunt> c = group b2 by url;


#計算出相同url的訪問次數;

grunt> d = foreach c generate group,COUNT($1);


#按照url訪問次數從大到小排序

grunt> e = order d by $1 desc;


#顯示變量e(結果)

grunt> dump e


#存儲結果到hdfs相關目錄中:

store e into '/user/hadoop/output/1027_1045.log';


ps:1027_1045.log 是一個目錄,不是文件;


#把hdfs文件copy到本地目錄中

copyToLocal 16456_2014102710_order.log /home/hadoop/.


#本地查看分析結果

[hadoop@node1 ~]$ cd 1027_1045.log

[hadoop@node1 1027_1045.log]$ cat part-r-00000 |more


wKioL1RW4HnSasj2AAVjhkXV2Yw662.jpg


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章