版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
什么是Hive(一)Hive是建立在Hadoop上的數(shù)據(jù)倉庫基礎構架。它提供了一系列的工具,可以用來進行數(shù)據(jù)提取轉化加載(ETL),這是一種可以存儲、查詢和分析存儲在Hadoop中的大規(guī)模數(shù)據(jù)的機制。Hive定義了簡單的類SQL查詢語言,稱為QL,它允許熟悉SQL的用戶查詢數(shù)據(jù)。同時,這個語言也允許熟悉MapReduce開發(fā)者的開發(fā)自定義的mapper和reducer來處理內(nèi)建的mapper和reducer無法完成的復雜的分析工作。什么是Hive(二)Hive是SQL解析引擎,它將SQL語句轉譯成M/RJob然后在Hadoop執(zhí)行。Hive的表其實就是HDFS的目錄,按表名把文件夾分開。如果是分區(qū)表,則分區(qū)值是子文件夾,可以直接在M/RJob里使用這些數(shù)據(jù)。Hive的系統(tǒng)架構?用戶接口,包括CLI,JDBC/ODBC,WebUI?元數(shù)據(jù)存儲,通常是存儲在關系數(shù)據(jù)庫如mysql,derby中?解釋器、編譯器、優(yōu)化器、執(zhí)行器?Hadoop:用HDFS進行存儲,利用MapReduce進行計算Hive的系統(tǒng)架構用戶接口主要有三個:CLI,JDBC/ODBC和WebUICLI,即Shell命令行JDBC/ODBC是Hive的Java,與使用傳統(tǒng)數(shù)據(jù)庫JDBC的方式類似WebGUI是通過瀏覽器訪問HiveHive將元數(shù)據(jù)存儲在數(shù)據(jù)庫中(metastore),目前只支持mysql、derby。Hive中的元數(shù)據(jù)包括表的名字,表的列和分區(qū)及其屬性,表的屬性(是否為外部表等),表的數(shù)據(jù)所在目錄等解釋器、編譯器、優(yōu)化器完成HQL查詢語句從詞法分析、語法分析、編譯、優(yōu)化以及查詢計劃(plan)的生成。生成的查詢計劃存儲在HDFS中,并在隨后由MapReduce調(diào)用執(zhí)行Hive的數(shù)據(jù)存儲在HDFS中,大部分的查詢由MapReduce完成(包含*的查詢,比如select*fromtable不會生成MapRedcue任務)Hive的安裝啟動#hivehive>showtables;hive>createtabletest(idint,namestring);hive>quit;Hive的metastoremetastore是hive元數(shù)據(jù)的集中存放地。metastore默認使用內(nèi)嵌的derby數(shù)據(jù)庫作為存儲引擎Derby引擎的缺點:一次只能打開一個會話使用Mysql作為外置存儲引擎,多用戶同時訪問Hive運行模式Hive的運行模式即任務的執(zhí)行環(huán)境分為本地與集群兩種我們可以通過mapred.job.tracker來指明設置方式:hive>SETmapred.job.tracker=local;Hive的啟動方式1、hive命令行模式,直接輸入#/hive/bin/hive的執(zhí)行程序,或者輸入#hive--servicecli2、hiveweb界面的(端口號9999)啟動方式#hive--servicehwi&用于通過瀏覽器來訪問hivehttp://hadoop0:9999/hwi/3、hive遠程服務(端口號10000)啟動方式#hive--servicehiveserver&Hive與傳統(tǒng)數(shù)據(jù)庫查詢語言HiveQLSQL數(shù)據(jù)存儲位置HDFSRawDeviceor本地FS數(shù)據(jù)格式用戶定義系統(tǒng)決定數(shù)據(jù)更新不支持支持索引新版本有,但弱有執(zhí)行MapReduceExecutor執(zhí)行延遲高低可擴展性高低數(shù)據(jù)規(guī)模大小Hive的數(shù)據(jù)類型基本數(shù)據(jù)類型tinyint/smallint/int/bigintfloat/doublebooleanstring復雜數(shù)據(jù)類型Array/Map/Struct沒有date/datetimeHive的數(shù)據(jù)存儲Hive的數(shù)據(jù)存儲基于HadoopHDFSHive沒有專門的數(shù)據(jù)存儲格式存儲結構主要包括:數(shù)據(jù)庫、文件、表、視圖Hive默認可以直接加載文本文件(TextFile),還支持sequencefile創(chuàng)建表時,指定Hive數(shù)據(jù)的列分隔符與行分隔符,Hive即可解析數(shù)據(jù)Hive的數(shù)據(jù)模型-數(shù)據(jù)庫類似傳統(tǒng)數(shù)據(jù)庫的DataBase默認數(shù)據(jù)庫"default"使用#hive命令后,不使用hive>use<數(shù)據(jù)庫名>,系統(tǒng)默認的數(shù)據(jù)庫??梢燥@式使用hive>usedefault;創(chuàng)建一個新庫hive>createdatabasetest_dw;Hive的數(shù)據(jù)模型-表Table內(nèi)部表Partition分區(qū)表ExternalTable外部表BucketTable桶表Hive的數(shù)據(jù)模型-內(nèi)部表與數(shù)據(jù)庫中的Table在概念上是類似每一個Table在Hive中都有一個相應的目錄存儲數(shù)據(jù)。例如,一個表test,它在HDFS中的路徑為:/warehouse/test。warehouse是在hive-site.xml中由${hive.metastore.warehouse.dir}指定的數(shù)據(jù)倉庫的目錄所有的Table數(shù)據(jù)(不包括ExternalTable)都保存在這個目錄中。刪除表時,元數(shù)據(jù)與數(shù)據(jù)都會被刪除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對應于數(shù)據(jù)庫的Partition列的密集索引在Hive中,表中的一個Partition對應于表下的一個目錄,所有的Partition的數(shù)據(jù)都存儲在對應的目錄中例如:test表中包含date和city兩個Partition,則對應于date=20130201,city=bj的HDFS子目錄為:/warehouse/test/date=20130201/city=bj對應于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;#用哪種方式存儲數(shù)據(jù),SEQUENCEFILE是hadoop自帶的文件壓縮格式一些相關命令SHOW
TABLES;#查看所有的表SHOW
TABLES
'*TMP*';#支持模糊查詢SHOWPARTITIONSTMP_TABLE;#查看表有哪些分區(qū)DESCRIBE
TMP_TABLE;#查看表結構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ù)進行哈希取值,然后放到不同文件中存儲。創(chuàng)建表 createtablebucket_table(idstring)clusteredby(id)into4buckets; 加載數(shù)據(jù) sethive.enforce.bucketing=true; insertintotablebucket_tableselectnamefromstu; insertoverwritetablebucket_tableselectnamefromstu;數(shù)據(jù)加載到桶表時,會對字段取hash值,然后與桶的數(shù)量取模。把數(shù)據(jù)放到對應的文件中。抽樣查詢 select*frombucket_tabletablesample(bucket1outof4onid);Hive的數(shù)據(jù)模型-外部表指向已經(jīng)在HDFS中存在的數(shù)據(jù),可以創(chuàng)建Partition它和內(nèi)部表在元數(shù)據(jù)的組織上是相同的,而實際數(shù)據(jù)的存儲則有較大的差異內(nèi)部表的創(chuàng)建過程和數(shù)據(jù)加載過程(這兩個過程可以在同一個語句中完成),在加載數(shù)據(jù)的過程中,實際數(shù)據(jù)會被移動到數(shù)據(jù)倉庫目錄中;之后對數(shù)據(jù)對訪問將會直接在數(shù)據(jù)倉庫目錄中完成。刪除表時,表中的數(shù)據(jù)和元數(shù)據(jù)將會被同時刪除外部表只有一個過程,加載數(shù)據(jù)和創(chuàng)建表同時完成,并不會移動到數(shù)據(jù)倉庫目錄中,只是與外部數(shù)據(jù)建立一個鏈接。當刪除一個外部表時,僅刪除該鏈接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導入數(shù)據(jù)當數(shù)據(jù)被加載至表中時,不會對數(shù)據(jù)進行任何轉換。Load操作只是將數(shù)據(jù)復制/移動至Hive表對應的位置。LOADDATA[LOCAL]INPATH'filepath'[OVERWRITE]
INTOTABLEtablename
[PARTITION(partcol1=val1,partcol2=val2...)]把一個Hive表導入到另一個已建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ū)索引“”,只掃描一個表中它關心的那一部分。Hive當前的實現(xiàn)是,只有分區(qū)斷言(Partitionedby)出現(xiàn)在離FROM子句最近的那個WHERE子句中,才會啟用分區(qū)剪枝。例如,如果page_views表(按天分區(qū))使用date列分區(qū),以下語句只會讀取分區(qū)為‘2008-03-01’的數(shù)據(jù)。
SELECTpage_views.*FROMpage_views
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/Z 44564-2024安全儀表系統(tǒng)過程分析技術系統(tǒng)
- GB/T 44490.2-2024地理信息成像傳感器的地理定位模型第2部分:SAR,InSAR,lidar和sonar
- 低空經(jīng)濟市場分析
- 贛南師范大學《書法與篆刻》2021-2022學年第一學期期末試卷
- 贛南師范大學《廣播電視概論》2022-2023學年第一學期期末試卷
- 阜陽師范大學《制圖識圖》2021-2022學年第一學期期末試卷
- 2023年無影燈投資申請報告
- 阜陽師范大學《外國文學二》2021-2022學年第一學期期末試卷
- 阜陽師范大學《環(huán)境設計專業(yè)導論》2021-2022學年第一學期期末試卷
- 二生命安全教育教案
- 劍橋國際少兒英語4文本(Word)
- 神奇的大腦PPT課件
- 平面構成與式設計PPT課件
- 《自律主題班會》
- 重回漢唐策劃
- 中央廣播電視大學 北京工業(yè)大學
- 管理類檔案基本歸檔范圍及保管期限表
- 常用肝功能指標解讀
- 汽車維修公司章程模板
- 環(huán)保、安全、消防、職業(yè)衛(wèi)生專項驗收的內(nèi)容
- 起重吊裝作業(yè)PPT課件
評論
0/150
提交評論