使用HiVE分析資料

2021-07-23 20:50:00 字數 1850 閱讀 9669

使用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 table

select 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 視窗分割槽...