版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
什么是Hive(一)Hive是建立在Hadoop上的數(shù)據(jù)倉庫基礎(chǔ)構(gòu)架。它提供了一系列的工具,可以用來進(jìn)行數(shù)據(jù)提取轉(zhuǎn)化加載(ETL),這是一種可以存儲(chǔ)、查詢和分析存儲(chǔ)在Hadoop中的大規(guī)模數(shù)據(jù)的機(jī)制。Hive定義了簡單的類SQL查詢語言,稱為QL,它允許熟悉SQL的用戶查詢數(shù)據(jù)。同時(shí),這個(gè)語言也允許熟悉MapReduce開發(fā)者的開發(fā)自定義的mapper和reducer來處理內(nèi)建的mapper和reducer無法完成的復(fù)雜的分析工作。什么是Hive(二)Hive是SQL解析引擎,它將SQL語句轉(zhuǎn)譯成M/RJob然后在Hadoop執(zhí)行。Hive的表其實(shí)就是HDFS的目錄,按表名把文件夾分開。如果是分區(qū)表,則分區(qū)值是子文件夾,可以直接在M/RJob里使用這些數(shù)據(jù)。Hive的系統(tǒng)架構(gòu)?用戶接口,包括CLI,JDBC/ODBC,WebUI?元數(shù)據(jù)存儲(chǔ),通常是存儲(chǔ)在關(guān)系數(shù)據(jù)庫如mysql,derby中?解釋器、編譯器、優(yōu)化器、執(zhí)行器?Hadoop:用HDFS進(jìn)行存儲(chǔ),利用MapReduce進(jìn)行計(jì)算Hive的系統(tǒng)架構(gòu)用戶接口主要有三個(gè):CLI,JDBC/ODBC和WebUICLI,即Shell命令行JDBC/ODBC是Hive的Java,與使用傳統(tǒng)數(shù)據(jù)庫JDBC的方式類似WebGUI是通過瀏覽器訪問HiveHive將元數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫中(metastore),目前只支持mysql、derby。Hive中的元數(shù)據(jù)包括表的名字,表的列和分區(qū)及其屬性,表的屬性(是否為外部表等),表的數(shù)據(jù)所在目錄等解釋器、編譯器、優(yōu)化器完成HQL查詢語句從詞法分析、語法分析、編譯、優(yōu)化以及查詢計(jì)劃(plan)的生成。生成的查詢計(jì)劃存儲(chǔ)在HDFS中,并在隨后由MapReduce調(diào)用執(zhí)行Hive的數(shù)據(jù)存儲(chǔ)在HDFS中,大部分的查詢由MapReduce完成(包含*的查詢,比如select*fromtable不會(huì)生成MapRedcue任務(wù))Hive的安裝啟動(dòng)#hivehive>showtables;hive>createtabletest(idint,namestring);hive>quit;Hive的metastoremetastore是hive元數(shù)據(jù)的集中存放地。metastore默認(rèn)使用內(nèi)嵌的derby數(shù)據(jù)庫作為存儲(chǔ)引擎Derby引擎的缺點(diǎn):一次只能打開一個(gè)會(huì)話使用Mysql作為外置存儲(chǔ)引擎,多用戶同時(shí)訪問Hive運(yùn)行模式Hive的運(yùn)行模式即任務(wù)的執(zhí)行環(huán)境分為本地與集群兩種我們可以通過mapred.job.tracker來指明設(shè)置方式:hive>SETmapred.job.tracker=local;Hive的啟動(dòng)方式1、hive命令行模式,直接輸入#/hive/bin/hive的執(zhí)行程序,或者輸入#hive--servicecli2、hiveweb界面的(端口號(hào)9999)啟動(dòng)方式#hive--servicehwi&用于通過瀏覽器來訪問hivehttp://hadoop0:9999/hwi/3、hive遠(yuǎn)程服務(wù)(端口號(hào)10000)啟動(dòng)方式#hive--servicehiveserver&Hive與傳統(tǒng)數(shù)據(jù)庫查詢語言HiveQLSQL數(shù)據(jù)存儲(chǔ)位置HDFSRawDeviceor本地FS數(shù)據(jù)格式用戶定義系統(tǒng)決定數(shù)據(jù)更新不支持支持索引新版本有,但弱有執(zhí)行MapReduceExecutor執(zhí)行延遲高低可擴(kuò)展性高低數(shù)據(jù)規(guī)模大小Hive的數(shù)據(jù)類型基本數(shù)據(jù)類型tinyint/smallint/int/bigintfloat/doublebooleanstring復(fù)雜數(shù)據(jù)類型Array/Map/Struct沒有date/datetimeHive的數(shù)據(jù)存儲(chǔ)Hive的數(shù)據(jù)存儲(chǔ)基于HadoopHDFSHive沒有專門的數(shù)據(jù)存儲(chǔ)格式存儲(chǔ)結(jié)構(gòu)主要包括:數(shù)據(jù)庫、文件、表、視圖Hive默認(rèn)可以直接加載文本文件(TextFile),還支持sequencefile創(chuàng)建表時(shí),指定Hive數(shù)據(jù)的列分隔符與行分隔符,Hive即可解析數(shù)據(jù)Hive的數(shù)據(jù)模型-數(shù)據(jù)庫類似傳統(tǒng)數(shù)據(jù)庫的DataBase默認(rèn)數(shù)據(jù)庫"default"使用#hive命令后,不使用hive>use<數(shù)據(jù)庫名>,系統(tǒng)默認(rèn)的數(shù)據(jù)庫??梢燥@式使用hive>usedefault;創(chuàng)建一個(gè)新庫hive>createdatabasetest_dw;Hive的數(shù)據(jù)模型-表Table內(nèi)部表Partition分區(qū)表ExternalTable外部表BucketTable桶表Hive的數(shù)據(jù)模型-內(nèi)部表與數(shù)據(jù)庫中的Table在概念上是類似每一個(gè)Table在Hive中都有一個(gè)相應(yīng)的目錄存儲(chǔ)數(shù)據(jù)。例如,一個(gè)表test,它在HDFS中的路徑為:/warehouse/test。warehouse是在hive-site.xml中由${hive.metastore.warehouse.dir}指定的數(shù)據(jù)倉庫的目錄所有的Table數(shù)據(jù)(不包括ExternalTable)都保存在這個(gè)目錄中。刪除表時(shí),元數(shù)據(jù)與數(shù)據(jù)都會(huì)被刪除Hive的數(shù)據(jù)模型-內(nèi)部表創(chuàng)建數(shù)據(jù)文件inner_table.dat創(chuàng)建表hive>createtableinner_table(keystring);加載數(shù)據(jù)hive>loaddatalocalinpath'/root/inner_table.dat'intotableinner_table;查看數(shù)據(jù)select*frominner_tableselectcount(*)frominner_table刪除表droptableinner_tableHive的數(shù)據(jù)模型-分區(qū)表Partition對應(yīng)于數(shù)據(jù)庫的Partition列的密集索引在Hive中,表中的一個(gè)Partition對應(yīng)于表下的一個(gè)目錄,所有的Partition的數(shù)據(jù)都存儲(chǔ)在對應(yīng)的目錄中例如:test表中包含date和city兩個(gè)Partition,則對應(yīng)于date=20130201,city=bj的HDFS子目錄為:/warehouse/test/date=20130201/city=bj對應(yīng)于date=20130202,city=sh的HDFS子目錄為;/warehouse/test/date=20130202/city=shHive的數(shù)據(jù)模型-分區(qū)表CREATE
TABLEtmp_table#表名(titlestring,
#字段名稱字段類型minimum_biddouble,quantitybigint,have_invoicebigint)COMMENT'注釋:XXX'
#表注釋
PARTITIONEDBY(ptSTRING)
#分區(qū)表字段(如果你文件非常之大的話,采用分區(qū)表可以快過濾出按分區(qū)字段劃分的數(shù)據(jù))
ROWFORMATDELIMITED
FIELDSTERMINATEDBY
'\001'
#字段是用什么分割開的STOREDASSEQUENCEFILE;#用哪種方式存儲(chǔ)數(shù)據(jù),SEQUENCEFILE是hadoop自帶的文件壓縮格式一些相關(guān)命令SHOW
TABLES;#查看所有的表SHOW
TABLES
'*TMP*';#支持模糊查詢SHOWPARTITIONSTMP_TABLE;#查看表有哪些分區(qū)DESCRIBE
TMP_TABLE;#查看表結(jié)構(gòu)Hive的數(shù)據(jù)模型-分區(qū)表創(chuàng)建數(shù)據(jù)文件partition_table.dat創(chuàng)建表createtablepartition_table(rectimestring,msisdnstring)partitionedby(daytimestring,citystring)rowformatdelimitedfieldsterminatedby'\t'storedasTEXTFILE;加載數(shù)據(jù)到分區(qū)loaddatalocalinpath'/home/partition_table.dat'intotablepartition_tablepartition(daytime='2013-02-01',city='bj');查看數(shù)據(jù)select*frompartition_tableselectcount(*)frompartition_table?刪除表droptablepartition_tableHive的數(shù)據(jù)模型-分區(qū)表altertablepartition_tableaddpartition(daytime='2013-02-04',city='bj');通過loaddata加載數(shù)據(jù)altertablepartition_tabledroppartition(daytime='2013-02-04',city='bj')元數(shù)據(jù),數(shù)據(jù)文件刪除,但目錄daytime=2013-02-04還在Hive的數(shù)據(jù)模型—桶表桶表是對數(shù)據(jù)進(jìn)行哈希取值,然后放到不同文件中存儲(chǔ)。創(chuàng)建表 createtablebucket_table(idstring)clusteredby(id)into4buckets; 加載數(shù)據(jù) sethive.enforce.bucketing=true; insertintotablebucket_tableselectnamefromstu; insertoverwritetablebucket_tableselectnamefromstu;數(shù)據(jù)加載到桶表時(shí),會(huì)對字段取hash值,然后與桶的數(shù)量取模。把數(shù)據(jù)放到對應(yīng)的文件中。抽樣查詢 select*frombucket_tabletablesample(bucket1outof4onid);Hive的數(shù)據(jù)模型-外部表指向已經(jīng)在HDFS中存在的數(shù)據(jù),可以創(chuàng)建Partition它和內(nèi)部表在元數(shù)據(jù)的組織上是相同的,而實(shí)際數(shù)據(jù)的存儲(chǔ)則有較大的差異內(nèi)部表的創(chuàng)建過程和數(shù)據(jù)加載過程(這兩個(gè)過程可以在同一個(gè)語句中完成),在加載數(shù)據(jù)的過程中,實(shí)際數(shù)據(jù)會(huì)被移動(dòng)到數(shù)據(jù)倉庫目錄中;之后對數(shù)據(jù)對訪問將會(huì)直接在數(shù)據(jù)倉庫目錄中完成。刪除表時(shí),表中的數(shù)據(jù)和元數(shù)據(jù)將會(huì)被同時(shí)刪除外部表只有一個(gè)過程,加載數(shù)據(jù)和創(chuàng)建表同時(shí)完成,并不會(huì)移動(dòng)到數(shù)據(jù)倉庫目錄中,只是與外部數(shù)據(jù)建立一個(gè)鏈接。當(dāng)刪除一個(gè)外部表時(shí),僅刪除該鏈接Hive的數(shù)據(jù)模型-外部表CREATEEXTERNALTABLEpage_view(viewTimeINT,
useridBIGINT,page_urlSTRING,
referrer_urlSTRING,
ipSTRINGCOMMENT'IPAddressoftheUser',countrySTRINGCOMMENT'countryoforigination‘)COMMENT'Thisisthestagingpageviewtable'ROWFORMATDELIMITEDFIELDSTERMINATEDBY
'44'
LINES TERMINATEDBY
'12'STOREDASTEXTFILELOCATION'hdfs://centos:9000/user/data/staging/page_view';Hive的數(shù)據(jù)模型-外部表創(chuàng)建數(shù)據(jù)文件external_table.dat創(chuàng)建表hive>createexternaltableexternal_table1(keystring)ROWFORMATDELIMITEDFIELDSTERMINATEDBY'\t'location'/home/external';在HDFS創(chuàng)建目錄/home/external#hadoopfs-put/home/external_table.dat/home/external加載數(shù)據(jù)LOADDATAINPATH'/home/external_table1.dat'INTOTABLEexternal_table1;查看數(shù)據(jù)select*fromexternal_tableselectcount(*)fromexternal_table刪除表droptableexternal_table視圖操作視圖的創(chuàng)建CREATEVIEWv1ASselect*fromt1;表的操作表的修改altertabletarget_tabaddcolumns(cols,string)表的刪除droptable導(dǎo)入數(shù)據(jù)當(dāng)數(shù)據(jù)被加載至表中時(shí),不會(huì)對數(shù)據(jù)進(jìn)行任何轉(zhuǎn)換。Load操作只是將數(shù)據(jù)復(fù)制/移動(dòng)至Hive表對應(yīng)的位置。LOADDATA[LOCAL]INPATH'filepath'[OVERWRITE]
INTOTABLEtablename
[PARTITION(partcol1=val1,partcol2=val2...)]把一個(gè)Hive表導(dǎo)入到另一個(gè)已建Hive表INSERTOVERWRITETABLEtablename[PARTITION(partcol1=val1,partcol2=val2...)]select_statementFROMfrom_statementCTASCREATE[EXTERNAL]TABLE[IFNOTEXISTS]table_name (col_namedata_type,...) … ASSELECT…例:createtablenew_external_testasselect*fromexternal_table1;查詢selectSELECT[ALL|DISTINCT]select_expr,select_expr,... FROMtable_reference [WHEREwhere_condition] [GROUPBYcol_list] [CLUSTERBYcol_list|[DISTRIBUTEBYcol_list][SORTBYcol_list]|[ORDERBYcol_list]] [LIMITnumber]DISTRIBUTEBY指定分發(fā)器(Partitioner),多Reducer可用查詢基于Partition的查詢一般SELECT查詢是全表掃描。但如果是分區(qū)表,查詢就可以利用分區(qū)剪枝(inputpruning)的特性,類似“分區(qū)索引“”,只掃描一個(gè)表中它關(guān)心的那一部分。Hive當(dāng)前的實(shí)現(xiàn)是,只有分區(qū)斷言(Partitionedby)出現(xiàn)在離FROM子句最近的那個(gè)WHERE子句中,才會(huì)啟用分區(qū)剪枝。例如,如果page_views表(按天分區(qū))使用date列分區(qū),以下語句只會(huì)讀取分區(qū)為‘2008-03-01’的數(shù)據(jù)。
SELECTpage_views.*FROMpage_views
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【金版學(xué)案-同步備課】2014-2021學(xué)年高中語文達(dá)標(biāo)鞏固(人教語文選修(先秦諸子))-1
- 【KS5U原創(chuàng)】新課標(biāo)2021年高一地理暑假作業(yè)九
- 2024年簡化版離婚合同書范本夫妻共同簽署版
- 2025年度新能源企業(yè)員工勞動(dòng)合同與綠色能源推廣責(zé)任書3篇
- 生產(chǎn)制造企業(yè)成本管控策略探討
- 基于業(yè)財(cái)融合視角的企業(yè)全面預(yù)算管理分析
- 【科學(xué)備考】2021高考生物二輪復(fù)習(xí)配套試題:生態(tài)工程(含2020高考試題)
- 外出學(xué)習(xí)向領(lǐng)導(dǎo)匯報(bào)
- 谷倉醫(yī)療系統(tǒng)住院醫(yī)生系統(tǒng)說明書
- 陶瓷企業(yè)的品牌宣傳與媒體合作考核試卷
- 廣東省深圳市2023-2024學(xué)年六年級上學(xué)期英語期中試卷(含答案)
- 人教版五年級上冊四則混合運(yùn)算300道及答案
- 汽車掛靠租賃協(xié)議書(范本)
- 中外廣告史(第三版) 課件全套 何玉杰 第0-11章 緒論、中國古代廣告的發(fā)展- 日本廣告的發(fā)展
- 2024中煤礦山建設(shè)集團(tuán)(國獨(dú)資)招聘200人高頻500題難、易錯(cuò)點(diǎn)模擬試題附帶答案詳解
- 高中地理選擇性必修2(綜合檢測卷)(附答案)-2022-2023學(xué)年高二上學(xué)期地理選擇性必修2
- DL∕T 5210.6-2019 電力建設(shè)施工質(zhì)量驗(yàn)收規(guī)程 第6部分:調(diào)整試驗(yàn)
- DL∕T 802.2-2017 電力電纜用導(dǎo)管 第2部分:玻璃纖維增強(qiáng)塑料電纜導(dǎo)管
- 錨索張拉記錄表
- 全國計(jì)算機(jī)等級考試二級Python復(fù)習(xí)備考題庫(含答案)
- 《生物安全培訓(xùn)》課件-2024鮮版
評論
0/150
提交評論