hive是什么意思

這篇文章主要介紹hive是什么意思,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)建站專(zhuān)注于雙灤網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供雙灤營(yíng)銷(xiāo)型網(wǎng)站建設(shè),雙灤網(wǎng)站制作、雙灤網(wǎng)頁(yè)設(shè)計(jì)、雙灤網(wǎng)站官網(wǎng)定制、微信小程序開(kāi)發(fā)服務(wù),打造雙灤網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供雙灤網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。

    hive是hadoop整個(gè)項(xiàng)目使用中最常用的輔助項(xiàng)目之一。

    hadoop基礎(chǔ)的組件有hdfs和mapreduce。hdfs完成整個(gè)hadoop集群中數(shù)據(jù)的存儲(chǔ),采用google的bigTable架構(gòu),其實(shí)我覺(jué)得就是將數(shù)據(jù)平分為多份,然后平分給分布式中的各機(jī)器上,存儲(chǔ)在上面的數(shù)據(jù)就像一個(gè)隱藏文件,你在本地硬盤(pán)上找不到它們,但卻可以通過(guò)hadoop中hdfs指令顯示和操作它們,像hadoop dfs -ls 路徑。而mapreduce則是將存儲(chǔ)在集群中的數(shù)據(jù)進(jìn)行分布式計(jì)算,由原來(lái)1臺(tái)電腦的工作放到集群中所有電腦上,因此它的運(yùn)算效率會(huì)有顯著的提高。

    說(shuō)完了hdfs和mapreduce,你應(yīng)該對(duì)hadoop有個(gè)基本的了解了,咱們?cè)僬f(shuō)下hive。

    hive是通過(guò)解析你所寫(xiě)的HiveQL語(yǔ)句,來(lái)進(jìn)行mapreduce計(jì)算,實(shí)現(xiàn)數(shù)據(jù)倉(cāng)庫(kù)中分析數(shù)據(jù)的作用。hive其實(shí)就是針對(duì)mapreduce寫(xiě)了一系列的方法和類(lèi),咱們可以通過(guò)寫(xiě)HIVEQL的形式執(zhí)行mapreduce.用hiveQL能實(shí)現(xiàn)的功能你都能在mapReduce中寫(xiě)出來(lái),如果你不閑麻煩的話。。。

    說(shuō)下hive的主要功能:數(shù)據(jù)ETL(抽取、轉(zhuǎn)換、加載)工具、數(shù)據(jù)存儲(chǔ)和大型數(shù)據(jù)集的查詢(xún)和分析能力。

    hive包含了四種數(shù)據(jù)模型:表(Table)、外部表(External Table)、分區(qū)(Partition)、桶(bucket)。

    表和外部表個(gè)人感覺(jué)用起來(lái)沒(méi)什么區(qū)別, 有區(qū)別的地方只不過(guò)是外部表在創(chuàng)建的時(shí)候數(shù)據(jù)沒(méi)有移動(dòng)到數(shù)據(jù)倉(cāng)庫(kù)目錄中,也就是說(shuō)外部表不是由它自己來(lái)管理。而刪除外部表的時(shí)候,只會(huì)刪除元數(shù)據(jù),外部表內(nèi)的數(shù)據(jù)不會(huì)被刪除。

    而分區(qū)和桶。。。就用分區(qū)。。不過(guò)分區(qū)和桶應(yīng)該都是為了優(yōu)化hive的分析效率而做的架構(gòu),我原來(lái)放10號(hào)到20號(hào)的數(shù)據(jù)都放個(gè)一個(gè)文件中,現(xiàn)在,我通過(guò)分區(qū),將10號(hào)到20號(hào)的每日數(shù)據(jù)存儲(chǔ)在以天為單位的存儲(chǔ)文件中,這樣,我查詢(xún)某一天的數(shù)據(jù)時(shí)只是查詢(xún)這一天的文件,而不是查詢(xún)未分區(qū)前的整個(gè)文件,這樣,效率就上來(lái)了,當(dāng)然,這只是我的理解,可能還有其它作用。。。

    我理解的hive的基本工作是:將metadata存到hive自建的表中,然后通過(guò)操作和分析hive表中的數(shù)據(jù),得到你想要的分析結(jié)果。

    hive的元數(shù)據(jù)存儲(chǔ)有三種方式:

    一、Single User Mode.其實(shí)就是將metadata存儲(chǔ)在一個(gè)內(nèi)存數(shù)據(jù)庫(kù)(derby)中。內(nèi)存才多大啊,所以日常中基本不用。

    二、Multi User Mode. 通過(guò)是連接本機(jī)的MySQL,來(lái)獲取元數(shù)據(jù)。這是日常和工作中最常用的一種方式。。貌似是工作中。。

    三、Remote Server Mode .其實(shí)就是通過(guò)本機(jī)的thrift協(xié)議訪問(wèn)另一個(gè)服務(wù)器上的metaStoreServcer,metadata不在本地。

    關(guān)于hive配置,不多說(shuō)了,網(wǎng)上一堆。。。

   關(guān)于hive中表的操作,我說(shuō)下容易讓人誤會(huì)的地方:

    hive雖然有表的概念,但它是一個(gè)離線數(shù)據(jù)分析工具,建表只是為了分析服務(wù)的,而分析的數(shù)據(jù)你不可能一條一條插入進(jìn)去,或者刪幾條。。而它的正常使用方式是將metadata導(dǎo)入到hive表中,再通過(guò)hiveQL分析hive表中的數(shù)據(jù)。所以hive中不提供手動(dòng)插入一條或幾條數(shù)據(jù)。有手動(dòng)就得有自動(dòng),自動(dòng)我舉個(gè)例子:insert overwrite table abc select * from bbc;這就是我認(rèn)為的自動(dòng)。。。。不能手動(dòng)增加數(shù)據(jù)了,只能導(dǎo)入數(shù)據(jù)或自動(dòng)添加數(shù)據(jù)。那么刪除和修改呢,妥妥的也不能。

    關(guān)于hive語(yǔ)句的介紹也不多說(shuō)了,網(wǎng)上也一堆,說(shuō)的都挺清楚明白的。不過(guò),這里我還得舉個(gè)例子,關(guān)于我今天寫(xiě)的一個(gè),煩了我一天的mapjoin...

     mapjoin 有兩個(gè)好處:1.關(guān)聯(lián)的兩張表中有一個(gè)表非常小時(shí),mapjoin可以將小表中的數(shù)據(jù)加載到內(nèi)存中,然后在map階段會(huì)自動(dòng)大表中的數(shù)據(jù),效率還不錯(cuò)。like :select /*+ mapjoin*/ a.id,a,username from a join b on (a.id=b.id)。這是在對(duì)等的情況下,效率相當(dāng)不錯(cuò)。

                          2.還有一個(gè)好處就是它可以實(shí)現(xiàn)不對(duì)等連接。。 join ..on  ()  ,on 后面會(huì)跟對(duì)等的條件,像a.id=b.id ,你如果跟個(gè)like 會(huì)報(bào)錯(cuò)。而mapjoin可以實(shí)現(xiàn)不對(duì)等條件,就是在join后面不用on了,直接用where,不過(guò)這個(gè)效率,試了下,個(gè)人感覺(jué)效率不高。。like :select /*+ mapjoin*/ a.id,a,username from a join b where a.username like 'error')。

            關(guān)于hive其它的方面我還沒(méi)有看。。等以后看完了,再談下感受吧。。

    PS: 關(guān)于mapjoin()的非等值測(cè)試:

    兩張表:pv_temp_test1(大表)  ,title_keyword_test(小表)

             pv_temp_test1:  530180 條 

             title_keyword_test  5646 條

  測(cè)試語(yǔ)句 :

hive> insert overwrite table hbase_test_keyword 
select /*+ mapjoin(a)*/ a.keyword,b.dt,b.pid,b.area,count(*),count(distinct clientid) from title_keyword_test a join (select dt,pid,area,wd,clientid from pv_temp_test1 where wd!='' and wd != 'None') b where b.wd like concat('%',a.keyword,'%') group by  a.keyword,b.dt,b.area,b.pid;

   花費(fèi)時(shí)間:4927秒......

以上是“hive是什么意思”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

分享名稱(chēng):hive是什么意思
網(wǎng)頁(yè)網(wǎng)址:http://muchs.cn/article30/gpjoso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版電子商務(wù)、虛擬主機(jī)、網(wǎng)站營(yíng)銷(xiāo)、品牌網(wǎng)站建設(shè)App設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)