使用hive分析資料:
hive 將會利用hdfs中的log進行分析, 你需要寫好相應的分析sql語句,hive將呼叫 map reduce完成你的分析任務。我測試用的log是squid log,log entry如下:
1356867313.430 109167 10.10.10.1 tcp_miss/200 51498 connect securepics.example.com:443 – hier_direct/securepics.example.com -
若要適應hive分析,就需要在hdfs資料的基礎上create table. 而最重要的一步就是根據log的內容來寫正規表示式,匹配log中的每一列。
[ ]*([0-9]*)[^ ]*[ ]*([^ ]*) ([^ ]*) ([^ |^ /]*)/([0-9]*) ([0-9]*) ([^ ]*) ((?:([^:]*)://)?([^/:]+):?([0-9]*)?(/?[^ ]*)) ([^ ]*) ([^/]+)/([^ ]+) (.*)
只能使用basic re是很讓人頭疼的,意味著沒法使用d, s, w這樣的語法。在寫以上正則的時候,這個**
幫了我大忙。可以動態檢視到正則的結果。
在hive中執行如下命令建立table:
一些分析sql例子:
# how many log entry inside tableselect count(*) from squidtable;
# how many log entry inside table with client ip 10.10.10.1
select count(*) from squidtable where clientip = "10.10.10.1";
# some advance query
select clientip, count(1) as numrequest from squidtable group by clientip sort
by numrequest desc limit 10;
資料分析 Hive
hive可以自由擴充套件集群的規模,一般情況下不需要重啟服務。hive支援使用者自定義函式,使用者可以根據自己的需求定義函式。hive容錯性好,節點出現問題sql依舊可以執行。shell執行資料庫語句 hive v e v表示展示log 資訊e表示直接執行sqly語句 hive f執行sql指令碼,...
hive簡單資料分析
select brand id from user log limit 10 檢視日誌前10資料好像也沒啥,和sql相同,limit取前多少條 as取別名 count 聚合函式 select count from user log 用聚合函式count 計算出表內有多少條行資料 distinct不重...
分析函式hive計算均值 Hive 分析函式
應用場景 1 用於分割槽排序 2 top n 3 層次查詢 常用分析函式 分析函式 描述 rank 返回資料項在分割槽中的排名。排名值序列可能會有間隔 dense rank 返回資料項在分割槽中的排名。排名值序列是連續的,沒有間隔 percent rank 計算當前行的百分比排名 x 1 視窗分割槽...