.安裝hive下載hive,下載地址http://mirror.bjtu.edu.cn/apache//hive/,解壓該文件:xuqiang@ubuntu:~/hadoop/src/hive$tarzxvfhive-0.7.0-bin.tar.gz設置環(huán)境變量:xuqiang@ubuntu:~/hadoo" />

欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

hive實戰(zhàn) - qiang.xu - 博客園

系統(tǒng) 2710 0

hive實戰(zhàn) - qiang.xu - 博客園

hive實戰(zhàn)

1. 安裝hive

2. hive實戰(zhàn)

3. hive存儲模型

4. 深入hql查詢語言

5. 參考資料及代碼下載?

<1>. 安裝hive ? ?

下載hive,下載地址 http://mirror.bjtu.edu.cn/apache//hive/ ,解壓該文件:

xuqiang@ubuntu:~/hadoop/src/hive$ tar zxvf hive-0.7.0-bin.tar.gz

設置環(huán)境變量:

xuqiang@ubuntu:~/hadoop/src/hive$ cd hive-0.7.0-bin/

xuqiang@ubuntu:~/hadoop/src/hive/hive-0.7.0-bin$ export HIVE_HOME=`pwd`

添加HIVE_HOME到環(huán)境變量PATH中:

xuqiang@ubuntu:~/hadoop/src/hive$ export PATH=$HIVE_HOME/bin:$PATH;

在運行hive之前,請確保變量HADOOP_HOME已經(jīng)設置,如果沒有設置,可以使用export命令設置該變量。

然后需要在hdfs上創(chuàng)建如下的目錄來保存hive相關的數(shù)據(jù)。

?

xuqiang@ubuntu:~ / hadoop / src / hive $ ? $ HADOOP_HOME / bin / hadoop?fs?- mkdir ? / tmp
xuqiang@ubuntu:~
/ hadoop / src / hive $ ? $ HADOOP_HOME / bin / hadoop?fs?- mkdir ? / user / hive / warehouse
xuqiang@ubuntu:~
/ hadoop / src / hive $ ? $ HADOOP_HOME / bin / hadoop?fs?-chmod?g + w? / tmp
xuqiang@ubuntu:~
/ hadoop / src / hive $ ? $ HADOOP_HOME / bin / hadoop?fs?-chmod?g + w? / user / hive / warehouse

?

此時運行hive的環(huán)境已經(jīng)準備好了,在命令行中鍵入如下命令開始運行hive:

?

xuqiang@ubuntu:~ / hadoop / src / hive / hive- 0.7 . 0 -bin $ ? $ HIVE_HOME / bin / hive

?

<2>. hive實戰(zhàn) ?

這里我們將完成這樣的一個過程,首先創(chuàng)建一個表,從本機上加載數(shù)據(jù)到該表中,查詢該表,得到我們感興趣的數(shù)據(jù)。

首先創(chuàng)建表(具體語法將在下面給出):

?

hive > ?create?table?cite ( citing?INT , ?cited?INT )
> ?row? format ?delimited
> ?fields?terminated?by?' , '
> ?stored?as?textfile ;

?

創(chuàng)建完表之后,我們可以使用show tables命令查看新建的表:

?

hive > ?show?tables ;
OK
cite
Time ?taken:? 1.257 ?seconds

?

查看新建表的結構:

?

hive > ?describe?cite ;
OK
citing?int
cited?int
Time ?taken:? 0.625 ?seconds

?

我們加載本地數(shù)據(jù)到該表中去:

?

hive > ?load?data?local?inpath?' / home / xuqiang / hadoop / data / cite75_99 . txt'
> ?overwrite?into?table?cite ;
Copying?data?from?file:
/ home / xuqiang / hadoop / data / cite75_99 . txt
Copying?file:?file:
/ home / xuqiang / hadoop / data / cite75_99 . txt
Loading?data?to?table?default
. cite
Deleted?hdfs:
// localhost: 9000 / user / hive / warehouse / cite
OK
Time ?taken:? 89.766 ?seconds

?

查詢前10行數(shù)據(jù):

?

hive > ? select ?*?from?cite?limit? 10 ;
OK
NULL?NULL
3858241 ? 956203
3858241 ? 1324234
3858241 ? 3398406
3858241 ? 3557384
3858241 ? 3634889
3858242 ? 1515701
3858242 ? 3319261
3858242 ? 3668705
3858242 ? 3707004
Time ?taken:? 0.778 ?seconds

?

查詢該文件中存在多少條數(shù)據(jù),這時hive將執(zhí)行一個map-reduce的過程來計算該值:

?

hive > ? select ?count ( 1 ) ?from?cite ;
Total?MapReduce?jobs?
= ? 1
Launching?Job?
1 ?out?of? 1
Number?of?reduce?tasks?determined?at?compile?
time :? 1
In?order?to?change?the?average?load?
for ?a?reducer? ( in?bytes ) :
set ?hive . exec . reducers . bytes . per . reducer =< number >
In?order?to?limit?the?maximum?number?of?reducers:
set ?hive . exec . reducers . max =< number >
In?order?to?
set ?a?constant?number?of?reducers:
set ?mapred . reduce . tasks =< number >
Starting?Job?
= ?job_201106150005_0004 , ?Tracking?URL? = ?http: // localhost: 50030 / jobdetails . jsp?jobid = job_201106150005_0004
Kill?
Command ? = ? / home / xuqiang / hadoop / src / hadoop- 0.20 . 2 / bin /../ bin / hadoop?job?-Dmapred . job . tracker = localhost: 9001 ?-kill?job_201106150005_0004
2011 - 06 - 15 ? 05 : 33 : 20 , 724 ?Stage- 1 ?map? = ? 0 % , ?reduce? = ? 0 %
2011 - 06 - 15 ? 05 : 33 : 46 , 325 ?Stage- 1 ?map? = ? 2 % , ?reduce? = ? 0 %
2011 - 06 - 15 ? 05 : 33 : 49 , 827 ?Stage- 1 ?map? = ? 3 % , ?reduce? = ? 0 %
2011 - 06 - 15 ? 05 : 33 : 53 , 208 ?Stage- 1 ?map? = ? 4 % , ?reduce? = ? 0 %
2011 - 06 - 15 ? 05 : 33 : 55 , 259 ?Stage- 1 ?map? = ? 7 % , ?reduce? = ? 0 %
2011 - 06 - 15 ? 05 : 34 : 40 , 450 ?Stage- 1 ?map? = ? 9 % , ?reduce? = ? 0 %
2011 - 06 - 15 ? 05 : 34 : 52 , 706 ?Stage- 1 ?map? = ? 48 % , ?reduce? = ? 0 %
2011 - 06 - 15 ? 05 : 34 : 57 , 961 ?Stage- 1 ?map? = ? 50 % , ?reduce? = ? 0 %
2011 - 06 - 15 ? 05 : 35 : 28 , 420 ?Stage- 1 ?map? = ? 50 % , ?reduce? = ? 17 %
2011 - 06 - 15 ? 05 : 35 : 36 , 653 ?Stage- 1 ?map? = ? 58 % , ?reduce? = ? 17 %
2011 - 06 - 15 ? 05 : 35 : 40 , 844 ?Stage- 1 ?map? = ? 61 % , ?reduce? = ? 17 %
2011 - 06 - 15 ? 05 : 35 : 49 , 131 ?Stage- 1 ?map? = ? 62 % , ?reduce? = ? 17 %
2011 - 06 - 15 ? 05 : 35 : 56 , 428 ?Stage- 1 ?map? = ? 67 % , ?reduce? = ? 17 %
2011 - 06 - 15 ? 05 : 36 : 34 , 380 ?Stage- 1 ?map? = ? 90 % , ?reduce? = ? 17 %
2011 - 06 - 15 ? 05 : 36 : 52 , 601 ?Stage- 1 ?map? = ? 100 % , ?reduce? = ? 17 %
2011 - 06 - 15 ? 05 : 37 : 10 , 299 ?Stage- 1 ?map? = ? 100 % , ?reduce? = ? 67 %
2011 - 06 - 15 ? 05 : 37 : 16 , 471 ?Stage- 1 ?map? = ? 100 % , ?reduce? = ? 100 %
Ended?Job?
= ?job_201106150005_0004
OK
16522439
Time ?taken:? 274.531 ?seconds

?

好的,最后我們刪除剛剛新建的表:

?

hive > ?drop?table?cite ;
OK
Time ?taken:? 5.724 ?seconds

?

<3>. 存儲模型 ? ?

通常情況下hive將數(shù)據(jù)存儲到hadoop上/user/hive/warehouse目錄下,關系型數(shù)據(jù)庫使用索引index去加快查詢速度,而hive使用的是以惡搞所謂的partition columns的概念,例如比如說存在某一行叫做state,可以根據(jù)state中存儲的數(shù)據(jù)值,將state分為50個partitions。如果存在date列的話,那么通常按照時間進行partition,hive在對分區(qū)的列上進行查詢的速度會比較快,原因是hadoop在數(shù)據(jù)存儲上將不同的分區(qū)存儲在了不同的目錄文件下。例如對于上面的列state和date,可能的存儲模型如下:

clip_image002

當然每個分區(qū)內的數(shù)據(jù)文件可能還是比較大,幸好在hive中存在一個所謂的buckets的概念,buckets根據(jù)hash值將數(shù)據(jù)分割成更小的數(shù)據(jù)文件,還是上面的例子,如果使用buckets的話,可能的存儲模型如下:

clip_image004

<4>. 深入hql ? ?

我們將通過實際hql語句來分析hql的語法。

clip_image006

該條語句創(chuàng)建表page_view,表中有5列,同時在見表語句中指出了各個列的數(shù)據(jù)類型,在hive中內建支持的數(shù)據(jù)類型如下:

clip_image008

這些類型的層次結構如下:

clip_image010

層次結構中允許從子類型隱式的轉換成父類型。

接著回到上面的見表語句,在列ip中添加了注釋:

Ip STRING COMMENT (“Ip address of user”)

然后建表語句中添加了表的分區(qū):

Partitioned by (dt string, country string)

注意的是這里的兩列并不是表中的列,實際上這里的分區(qū)的兩列dt和country僅僅是為了分區(qū),實際上可能并不存儲這些數(shù)據(jù)。

Additionally the partitioned by clause defines the partitioning columns which are different from the data columns and are actually not stored with the data. When specified in this way

然后建表語句指定buckets大小,這里是32。

最后指定數(shù)據(jù)源的文件格式。

好的現(xiàn)在我們給出更多的表操作的例子,由于sql極其相似,這里僅僅給出了語法,并沒有給出解釋。

clip_image012

描述表page_view結構。

clip_image014

改變表的名字

clip_image016

新增加一行

clip_image018

刪除分區(qū)

clip_image020

刪除表

clip_image022

顯示所有的表

clip_image024

從文件page_view.txt文件將數(shù)據(jù)加載到表page_view中,注意的是這里的路徑可以使用絕對路徑或者相對路徑。這里使用了local,表明數(shù)據(jù)文件的來源是本地,而不是在hdfs上。

Hql上的查詢語句和sql很類似,這里沒有一一給出,下面僅僅將給出hql中運算符和內建聚類函數(shù)。

運算符:

clip_image026

內建聚類函數(shù):

clip_image028

<5>. 參考資料及代碼下載 ? ?

http://wiki.apache.org/hadoop/Hive/GettingStarted

hive實戰(zhàn) - qiang.xu - 博客園


更多文章、技術交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 99这里只有精品视频 | 骚视频在线观看 | 久久精品国产免费看久久精品 | 久久久精品一区二区三区 | 三级毛片黄色 | 午夜精品久久久久久久男人的天堂 | 中文字幕av一区二区 | 久久99亚洲综合精品首页 | chinese18 xxxx videos| 三级毛片黄色 | 日本肥老太成熟 | 午夜性电影 | 日韩欧美在线免费观看 | 综合网天天射 | 欧美日韩视频在线 | 欧美顶级xxxxbbbb | 草久久久 | 嫩草网站 | 妈妈的朋友酷客影响 | 色婷婷激婷婷深爱五月小说 | 精品国产乱码久久久久久1区2区 | 黄色aaa视频| 素人视频在线观看免费 | 国产欧美日本 | 欧美搞黄视频 | 国产九九精品视频 | 日本精a在线观看 | 69堂永久69tangcom | 精品久久久久久久人人人人传媒 | 色欲AV蜜臀AV在线观看麻豆 | 久草大| 亚洲一区二区三区视频 | 国产成人免费高清激情视频 | 一区二区久久 | 欧美特黄a级高清免费大片 精品日本三级在线观看视频 | a级片免费视频 | 国产成人综合95精品视频免费 | 亚洲色图在线视频 | 三级在线观看 | 欧美激情一区二区三区视频高清 | 在线看免费观看日本 |