1. 程式人生 > >Hive分析搜尋引擎的資料

Hive分析搜尋引擎的資料

最近學習Hive的基本使用,下面就記錄一下我學習Hive的一些基本語句

資料格式:

(資料可以點選:使用者查詢日誌(SogouQ)下載搜狗實驗室的資料,可以根據自己的需要選擇資料規模)

00:00:00    2982199073774412    [360安全衛士]    8 3    download.it.com.cn/softweb/software/firewall/antivirus/20067/17938.html
00:00:00    07594220010824798    [哄搶救災物資]    1 1    news.21cn.com/social/daqian/2008/05/29/4777194_1.shtml
00:00:00    5228056822071097    [75810部隊]    14 5    www.greatoo.com/greatoo_cn/list.asp?link_id=276&title=%BE%DE%C2%D6%D0%C2%CE%C5


欄位含義為:

搜尋時間 使用者ID 搜尋關鍵字  點選次序 返回次序 網頁連結

在Hive中操作資料:

1.啟動hive

2.建立一個hive資料庫

3.建立完成後檢視

在HDFS上已經有一個hive的目錄了

4.先將資料匯入到HDFS上

hdfs dfs -mkdir -p /sougou/input

5.把資料上傳到HDFS上

hdfs dfs -put ~/SogouQ*.txt /sougou/input

6.建立一張表,表的欄位要和你要匯入的資料的欄位保持一致,否則資料就會亂掉

create table SogouQ3(ID string,websession string,word string,s_seq int,c_seq int,website string) row format delimited fields terminated by '\t' lines terminated by '\n';

注意:一行中資料欄位之間是以"\t"分開,行之間是以"\n"分開,在建立表的時候需要說明;

7.從HDFS上匯入資料
 LOAD DATA INPATH '/sougou/input/SogouQ3.txt' INTO TABLE sogouq3; 

在web上已經可以看到相關資料了

9.對hive上的資料進行操作

select  count(*) from sogouq3; //檢視有多少條記錄
select count(*) from sogouq3 where website like '%baidu%';  //檢視欄位中有baidu的有多少條記錄

select count(*) from sogouq3 where like '%baidu%' and s_seq = 1 and c_seq = 1; 

10.建立一張外部表
create external table SogouQ1(ID string,websession string,word string,s_seq int,c_seq int,website string) row format delimited fields terminated by '\t' lines terminated by '\n' stored as textfile location '/sougou/input/SogouQ1external';

需要說明元資料的引用位置,我這裡指定為'/sougou/input/SogouQ1external

11.對外部表操作和內部表操作是一樣的
select count(*) from sogouq1 where s_seq=1 and c_seq=1;
select  word,count(word) as countword from sogouq1 group by word order by countword desc limit 5;

說明:

外部表就是關聯的時候只是將元資料關聯到表中,刪除表不會刪除元資料;
內部表是將元資料轉移到表中,刪除表時元資料也會被刪除掉;