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;
說明:
外部表就是關聯的時候只是將元資料關聯到表中,刪除表不會刪除元資料;
內部表是將元資料轉移到表中,刪除表時元資料也會被刪除掉;