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

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

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

系統(tǒng) 2619 0

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

hive實(shí)戰(zhàn)

1. 安裝hive

2. hive實(shí)戰(zhàn)

3. hive存儲(chǔ)模型

4. 深入hql查詢語(yǔ)言

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

設(shè)置環(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;

在運(yùn)行hive之前,請(qǐng)確保變量HADOOP_HOME已經(jīng)設(shè)置,如果沒(méi)有設(shè)置,可以使用export命令設(shè)置該變量。

然后需要在hdfs上創(chuàng)建如下的目錄來(lái)保存hive相關(guān)的數(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

?

此時(shí)運(yùn)行hive的環(huán)境已經(jīng)準(zhǔn)備好了,在命令行中鍵入如下命令開(kāi)始運(yùn)行hive:

?

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

?

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

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

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

?

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

?

查看新建表的結(jié)構(gòu):

?

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

?

我們加載本地?cái)?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

?

查詢?cè)撐募写嬖诙嗌贄l數(shù)據(jù),這時(shí)hive將執(zhí)行一個(gè)map-reduce的過(guò)程來(lái)計(jì)算該值:

?

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>. 存儲(chǔ)模型 ? ?

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

clip_image002

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

clip_image004

<4>. 深入hql ? ?

我們將通過(guò)實(shí)際hql語(yǔ)句來(lái)分析hql的語(yǔ)法。

clip_image006

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

clip_image008

這些類型的層次結(jié)構(gòu)如下:

clip_image010

層次結(jié)構(gòu)中允許從子類型隱式的轉(zhuǎn)換成父類型。

接著回到上面的見(jiàn)表語(yǔ)句,在列ip中添加了注釋:

Ip STRING COMMENT (“Ip address of user”)

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

Partitioned by (dt string, country string)

注意的是這里的兩列并不是表中的列,實(shí)際上這里的分區(qū)的兩列dt和country僅僅是為了分區(qū),實(shí)際上可能并不存儲(chǔ)這些數(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

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

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

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

clip_image012

描述表page_view結(jié)構(gòu)。

clip_image014

改變表的名字

clip_image016

新增加一行

clip_image018

刪除分區(qū)

clip_image020

刪除表

clip_image022

顯示所有的表

clip_image024

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

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

運(yùn)算符:

clip_image026

內(nèi)建聚類函數(shù):

clip_image028

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

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

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


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

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

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦?。?!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 天天躁日日躁狠狠躁黑人躁 | 国产中文欧美 | 在线视频免费观看a毛片 | 欧美亚洲国产第一页草草 | 欧美激情一区二区 | 五月天色中色 | 四虎国产精品永久在线播放 | 国产一区免费观看 | 一级欧美毛片成人免费视频 | 91最新免费地址入口 | 国产91在线 | 中文 | 欧美一级高清片在线 | 日韩天天摸天天澡天天爽视频 | 五月天婷婷免费视频观看 | 毛片女人毛片一级毛片毛片 | 中文字幕在线亚洲精品 | 亚洲视频免费 | 成人免费草草视频 | www.黄色片| 狼人射综合 | 亚洲视频在线精品 | 久久久伊人影院 | 狠狠色丁香婷婷综合最新地址 | 超高清欧美videos360 | 我不卡老子影院午夜伦我不卡四虎 | 中文在线免费不卡视频 | 久久国产精品老人性 | 日日操干 | 久草视频免费在线播放 | www.欧美| 久久亚洲网站 | 国产综合久久 | 久热这里只精品99国产6_99 | 天天综合亚洲国产色 | 欧美亚洲另类图片 | 欧美精品18xxxhd4k | 日韩视频一区二区在线观看 | 麻豆精品成人免费国产片 | 久久午夜综合久久 | 成人动漫影院 | 久久久噜噜噜久噜久久 |