版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
第7章數(shù)據(jù)倉庫Hive目
錄1Hive簡介Hive架構(gòu)Hive數(shù)據(jù)存儲模型237.1.1Hive簡介Hive是基于Hadoop的一個數(shù)據(jù)倉庫工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張表,并提供類SQL查詢功能。之所以說Hive是構(gòu)建在Hadoop之上的數(shù)據(jù)倉庫,是因為數(shù)據(jù)存儲在HDFS上,數(shù)據(jù)計算可以使用基于Hadoop的多種計算框架.Hive定義了簡單的類SQL查詢語言,稱為HiveQL,使不熟悉MapReduce的用戶也能很方便地利用SQL語言對數(shù)據(jù)進行查詢、匯總和分析。表7-1
Hive和傳統(tǒng)關(guān)系型數(shù)據(jù)庫的比較
HiveRDBMS查詢語言HQLSQL數(shù)據(jù)存儲位置HDFS塊設備或本地文件系統(tǒng)數(shù)據(jù)格式用戶定義系統(tǒng)決定數(shù)據(jù)更新不支持對某個具體行的操作,對數(shù)據(jù)的操作只支持覆蓋原數(shù)據(jù)和追加數(shù)據(jù)支持索引無有執(zhí)行MapReduceExecutor執(zhí)行延遲高低處理數(shù)據(jù)規(guī)模大小可擴展性高低7.1.2Hive架構(gòu)(1)用戶接口主要有三個:CLI,Client和WUI。即Hive對外提供了三種服務模式,Hive命令行模式(CLI),Hive的Web模式(WUI),Hive的遠程服務(Client),其中最常用的是Hive命令行模式CLI,WUI是通過瀏覽器訪問Hive。(2)Hive將元數(shù)據(jù)存儲在關(guān)系數(shù)據(jù)庫中,如mysql、derby。Hive中的元數(shù)據(jù)包括表的名字,表的列及類型,存儲空間,分區(qū),表數(shù)據(jù)所在目錄等。(3)解釋器、編譯器、優(yōu)化器完成HiveQL查詢語句從詞法分析、語法分析、編譯、優(yōu)化以及查詢計劃的生成。生成的查詢計劃存儲在HDFS中,并在隨后有MapReduce調(diào)用執(zhí)行。(4)Hive的數(shù)據(jù)存儲在HDFS中,大部分的查詢、計算由MapReduce完成(包含*的查詢,比如select*fromtbl不會生成MapRedcue任務)。2、連接數(shù)據(jù)庫的三種模式Hive將元數(shù)據(jù)存儲在RDBMS中,有三種模式可以連接到數(shù)據(jù)庫:(1)單用戶模式。此模式連接到一個嵌入式數(shù)據(jù)庫Derby,一般用于單元測試。(2)多用戶模式。通過網(wǎng)絡連接到一個數(shù)據(jù)庫中,是最經(jīng)常使用到的模式,一般使用mysql存儲hive元數(shù)據(jù)。如下圖7-2所示。(3)遠程服務器模式。用于非Java客戶端訪問元數(shù)據(jù)庫,在服務器端啟動MetaStoreServer,客戶端利用Thrift協(xié)議通過MetaStoreServer訪問元數(shù)據(jù)庫。一般使用mysql存儲hive元數(shù)據(jù)。如下圖7-3所示。7.1.3Hive數(shù)據(jù)存儲模型Hive中所有的數(shù)據(jù)都存儲在HDFS中。Hive中包含以下數(shù)據(jù)模型:Table內(nèi)部表,ExternalTable外部表,Partition分區(qū),Bucket桶。Hive默認可以直接加載文本文件,還支持sequencefile、RCFile。(1)Hive數(shù)據(jù)庫類似傳統(tǒng)數(shù)據(jù)庫的DataBase,在第三方數(shù)據(jù)庫里實際是一張表。創(chuàng)建Hive數(shù)據(jù)庫示例:createdatabasemyhive_db。(2)內(nèi)部表Hive的內(nèi)部表與數(shù)據(jù)庫中的表在概念上類似。每一個Table在Hive中都有一個相應的目錄存儲數(shù)據(jù)。例如一個表myhive,它在HDFS中的路徑為/test/myhive,其中test是在hive-site.xml中由${hive.metastore.warehouse.dir}指定的數(shù)據(jù)倉庫的目錄,所有的Table數(shù)據(jù)(不包括外部表)都保存在這個目錄中。刪除表時,元數(shù)據(jù)與數(shù)據(jù)都會被刪除。(2)內(nèi)部表內(nèi)部表示例:創(chuàng)建數(shù)據(jù)文件:myhive.txt創(chuàng)建表:createtablemyhive(keystring)加載數(shù)據(jù):LOADDATALOCALINPATH‘filepath’INTOTABLEmyhive查看數(shù)據(jù):select*frommyhiveselectcount(*)frommyhive刪除表:droptablemyhive(3)外部表外部表(ExternalTable)指向已經(jīng)在HDFS中存儲的數(shù)據(jù),可以創(chuàng)建分區(qū)。外部表只有一個過程,加載數(shù)據(jù)和創(chuàng)建表同時完成(CREATEEXTERNALTABLE……LOCATION),實際數(shù)據(jù)是存儲在LOCATION后面指定的HDFS路徑中,并不會移動到數(shù)據(jù)倉庫目錄中。當刪除一個外部表時,僅刪除該鏈接。外部表示例:創(chuàng)建數(shù)據(jù)文件:test_ext.txt創(chuàng)建表:createexternaltabletest_ext(keystring)加載數(shù)據(jù):LOADDATAINPATH‘filepath’INTOTABLEtest_ext查看數(shù)據(jù):select*fromtest_extselectcount(*)fromtest_ext刪除表:droptabletest_ext(4)分區(qū)分區(qū)(Partition)對應于數(shù)據(jù)庫中的Partition列的密集索引,但是Hive中Partition的組織方式和數(shù)據(jù)庫中的很不相同。在Hive中,表中的一個Partition對應于表下的一個目錄,所有的Partition的數(shù)據(jù)都存儲在對應的目錄中。分區(qū)表示例:創(chuàng)建數(shù)據(jù)文件:test_part.txt創(chuàng)建表:createtabletest_part(keystring)partitionedby(dsstring)加載數(shù)據(jù):LOADDATAINPATH‘filepath’INTOTABLEtest_partpartition(city=‘CA’)查看數(shù)據(jù):select*fromtest_partselectcount(*)fromtest_part刪除表:droptabletest_part(5)桶桶(Buckets)是將表的列通過哈希(Hash)算法進一步分解成不同的文件存儲。它對指定列計算Hash,根據(jù)Hash值切分數(shù)據(jù),目的是為了并行,每一個Bucket對應一個文件。例如將user列分散至32個bucket,首先對user列的值計算Hash,對應Hash值為0的HDFS目錄為/test/hivet/ds=20090801/ctry=US/part-00000;Hash值為20的HDFS目錄為/test/hivet/ds=20090801/ctry=US/part-00020。如果想應用很多的Map任務這樣是不錯的選擇。桶的簡單示例:創(chuàng)建數(shù)據(jù)文件:test_bucket.txt創(chuàng)建表:createtabletest_bucket(keystring)clusteredby(key)into20buckets加載數(shù)據(jù):LOADDATAINPATH‘filepath’INTOTABLEtest_bucket查看數(shù)據(jù):select*fromtest_bucketsethive.enforce.bucketing=true;(6)Hive的視圖視圖與傳統(tǒng)數(shù)據(jù)庫的視圖類似。視圖是只讀的,它基于基本表,如果改變,數(shù)據(jù)增加不會影響視圖的呈現(xiàn);如果刪除,會出現(xiàn)問題。如果不指定視圖的列,會根據(jù)select語句后的列生成。示例:createviewtest_viewasselect*fromtest7.2.2HiveQL常用操作1、Hive基本數(shù)據(jù)類型Hive支持基本數(shù)據(jù)類型和復雜類型,基本數(shù)據(jù)類型主要有數(shù)值類型(INT、FLOAT、DOUBLE)、布爾型和字符串,復雜類型有三種:ARRAY、MAP和STRUCT。2、HiveQL常用操作(1)創(chuàng)建數(shù)據(jù)庫,創(chuàng)建表:createdatabaseifnotexistshive;#創(chuàng)建數(shù)據(jù)庫showdatabases;#查看所有數(shù)據(jù)庫usehive;#切換到hive數(shù)據(jù)庫下showtables;#查看該數(shù)據(jù)庫下的所有表(2)導入數(shù)據(jù)在此主要介紹從文件中向表中導入數(shù)據(jù)。假設需要將本地文件/opt/examples/stu.txt導入到hive數(shù)據(jù)庫中的stu表。stu.txt文件內(nèi)容如下。創(chuàng)建stu.txt文件并輸入數(shù)據(jù),命令及操作如下。stu.txt:1 zhangsan2 lisi3 wangwu注意:stu.txt文件中的數(shù)據(jù)間隔符要和stu表建表時采用的字段分隔符一致,本教程創(chuàng)建stu表時的字段分隔符是tab鍵,所以這里的stu.tx
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 租房合租房合同范本04
- 項目委托合同
- 合作社向個人借款合同范本
- 煙霧探測器與噴淋系統(tǒng)
- 滅火器材的創(chuàng)新與發(fā)展趨勢
- 半年工作總結(jié)報告范文11篇
- 生態(tài)產(chǎn)品價值實現(xiàn)的研究熱點與展望
- 嬰幼兒、成人和老年皮膚結(jié)構(gòu)特點研究進展
- 基于情感認知理論的智能教育裝備CMF設計探析
- 密集雜波環(huán)境紅外目標檢測關(guān)鍵技術(shù)研究
- 公眾聚集場所消防技術(shù)標準要點
- 幼兒園員工手冊與規(guī)章制度
- 社團活動經(jīng)費預算申請表
- 經(jīng)營范圍登記規(guī)范表述目錄(試行)(V1.0.2版)
- 2023年山東省威海市中考物理真題(附答案詳解)
- 第八講 發(fā)展全過程人民民主PPT習概論2023優(yōu)化版教學課件
- 王崧舟:學習任務群與課堂教學變革 2022版新課程標準解讀解析資料 57
- 招投標現(xiàn)場項目經(jīng)理答辯(完整版)資料
- 運動競賽學課件
- 2022年上海市初中畢業(yè)數(shù)學課程終結(jié)性評價指南
- 高考作文備考-議論文對比論證 課件14張
評論
0/150
提交評論