2hive數(shù)據(jù)類型及文件格式_第1頁
2hive數(shù)據(jù)類型及文件格式_第2頁
2hive數(shù)據(jù)類型及文件格式_第3頁
2hive數(shù)據(jù)類型及文件格式_第4頁
2hive數(shù)據(jù)類型及文件格式_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

數(shù)據(jù)倉庫Hive《Hive編程指南》Hive支持的基本數(shù)據(jù)類型Hive集合數(shù)據(jù)類型文本文件數(shù)據(jù)編碼本節(jié)主要內(nèi)容:教學目標:1、掌握hive基本數(shù)據(jù)類型的使用2、掌握hive集合數(shù)據(jù)類型的使用3、熟悉hive文本文件數(shù)據(jù)編碼HIVE的數(shù)據(jù)分為兩個部分,一個是存數(shù)據(jù)的數(shù)據(jù)庫,另一個是元數(shù)據(jù)庫。存數(shù)據(jù)的數(shù)據(jù)庫:HIVE中存數(shù)據(jù)的數(shù)據(jù)庫,會被存在HDFS上,它有默認目錄,由hive-site.xml指定。HIVE的結構還是數(shù)據(jù)庫+表的形式。這里表分為內(nèi)部表和外部表。HIVE除了表還支持的數(shù)據(jù)模型有分區(qū)partition、分桶bucket。Hive數(shù)據(jù)存儲元數(shù)據(jù)庫:什么是元數(shù)據(jù)?簡單來說,元數(shù)據(jù)就是用來描述數(shù)據(jù)結構的數(shù)據(jù)。例如上邊提到的,數(shù)據(jù)的行分隔符、列分隔符、表的名字等等都屬于元數(shù)據(jù)。HIVE建立表并不是有固定的表的格式,而是它僅僅記錄了導入的數(shù)據(jù)的格式,例如行分隔符、列分隔符等,它將這些存于元數(shù)據(jù)庫里,這樣就建立了一張表,換而言之,HIVE支持不同格式的數(shù)據(jù)導入,你只要告訴HIVE你的數(shù)據(jù)是什么格式的,HIVE就能根據(jù)格式而建立一張表,并且它并不會去修改原數(shù)據(jù)格式。Hive數(shù)據(jù)存儲元數(shù)據(jù)庫:一旦修改表的信息,那么元數(shù)據(jù)就會跟著變動,所以元數(shù)據(jù)是一個經(jīng)常在變動的數(shù)據(jù)。而HDFS是被設計用來多讀取、少寫入的一種文件系統(tǒng),所以,一般情況下,元數(shù)據(jù)庫放在其他的傳統(tǒng)DBMS中,比如常見的MySQL等。要用其他數(shù)據(jù)庫,必然涉及到數(shù)據(jù)庫連接的問題??梢杂肕ySQL的JDBC進行連接,還是需要配置hive-site.xml,需要把JDBC的jar包給拷貝到HIVE/lib下,以供調(diào)用。Hive數(shù)據(jù)存儲hive的默認元數(shù)據(jù)信息存放在derby里面內(nèi)置Derby是單Session的支持mysql、oracle等使用mysql數(shù)據(jù)庫,可以開兩個會話執(zhí)行,如果使用的是derby則會元數(shù)據(jù)報錯。Hive元數(shù)據(jù)存儲元數(shù)據(jù)庫hive元數(shù)據(jù)庫:MySQL中創(chuàng)建的hivemysql>usehive;mysql>showtables;Hive的元數(shù)據(jù)信息在MySQL數(shù)據(jù)中有57張表。mysql>select*fromDBS;mysql>select*fromTBLS;學習資料:數(shù)據(jù)存儲格式Hive會為每個創(chuàng)建的數(shù)據(jù)庫在HDFS上創(chuàng)建一個目錄,該數(shù)據(jù)庫的表會以子目錄形式存儲,表中的數(shù)據(jù)會以表目錄下的文件形式存儲。對于default數(shù)據(jù)庫,默認的缺省數(shù)據(jù)庫沒有自己的目錄,default數(shù)據(jù)庫下的表默認存放在/user/hive/warehouse目錄下。Hive沒有專門的數(shù)據(jù)存儲格式??芍С諸ext,SequenceFile,ParquetFile,RCFILE等。數(shù)據(jù)存儲格式(1)textfiletextfile為默認格式,存儲方式為行存儲。數(shù)據(jù)不做壓縮,磁盤開銷大,數(shù)據(jù)解析開銷大。hive>createtableifnotexistsuser1

>(idbigint,usernamestring,passwordstring,sexstring)

>rowformatdelimited

>fieldsterminatedby'\t'

>storedastextfile;數(shù)據(jù)存儲格式(1)textfile在HDFS上一層層查看hive>dfs-ls/user/hive/warehousehive>dfs-ls/user/hive/warehouse/mydb.dbhive>dfs-ls/user/hive/warehouse/mydb.db/user1由于user1表中沒有數(shù)據(jù),所以在該目錄下沒有任何內(nèi)容數(shù)據(jù)存儲格式(1)textfile在本地系統(tǒng)中準備所需的數(shù)據(jù)Linux提示符下輸入:vi/home/userinfo.txt輸入多行數(shù)據(jù),每列數(shù)據(jù)用TAB鍵分開,數(shù)據(jù)內(nèi)容如下圖在hive提示符下執(zhí)行命令:hive>loaddatalocalinpath'/home/userinfo.txt'intotableuser1;hive>select*fromuser1;數(shù)據(jù)存儲格式(1)textfile再次查看HDFS的目錄,發(fā)現(xiàn)多了一個userinfo.txt文本文件,這說明user1表的數(shù)據(jù)以文本文件形式存儲在HDFS上了。hive>dfs-ls/user/hive/warehouse/mydb.db/user1hive>dfs-text/user/hive/warehoue/mydb.db/user1/userinfo.txt數(shù)據(jù)存儲格式(2)SequenceFile

SequenceFile是HadoopAPI提供的一種二進制文件支持,其具有使用方便、可分割、可壓縮的特點。(3)RCFile一種行列存儲相結合的存儲方式。(4)ORCFile

數(shù)據(jù)按照行分塊,每個塊按照列存儲,其中每個塊都存儲有一個索引。hive給出的新格式,屬于RCFILE的升級版,性能有大幅度提升,而且數(shù)據(jù)可以壓縮存儲,壓縮快,快速列存取。(5)ParquetFile

Parquet也是一種行式存儲,同時具有很好的壓縮性能;同時可以減少大量的表掃描和反序列化的時間。Hive的基本數(shù)據(jù)類型P40基本類型描述示例TINYINT1個字節(jié)有符號整數(shù)-128~1271YSMALLINT2個字節(jié)有符號整數(shù)1SINT4個字節(jié)有符號整數(shù)1BIGINT8個字節(jié)有符號整數(shù)1LFLOAT4個字節(jié)單精度浮點型1.0DOUBLE8個字節(jié)雙精度浮點型1.0DECIMAL任意精度的帶符號小數(shù)1.0STRING字符串,單引號或雙引號“good”,'good'CHAR固定長度字符串“good”,'good'VARCHAR變長字符串“good”,'good'Hive的基本數(shù)據(jù)類型P40基本類型描述示例BOOLEANTRUE/FALSEtrueDATE日期‘2018-03-11’TIMESTAMP時間戳,整數(shù)、浮點數(shù)或者字符串122327493795BINARY字節(jié)數(shù)組無法表示這些數(shù)據(jù)類型都是對java中接口的實現(xiàn),因此這些類型的具體行為細節(jié)和java中對應的類型完全一致。Hive支持使用struct,map和array集合數(shù)據(jù)類型Hive的復雜數(shù)據(jù)類型-集合數(shù)據(jù)類型P42數(shù)據(jù)類型描述示例STRUCT一組命名字段,字段類型可以不同,可以通過“點”符號訪問元素內(nèi)容。struct(‘john’,’doe’)MAPMap是一組鍵-值對元素集合。鍵的類型必須是原子的。map(‘a(chǎn)’,1,’b’,2)ARRAY數(shù)組是一組具有相同類型和名稱的變量的集合。這些變量稱為數(shù)組的元素,每組元素都有一個編號,編號從0開始。array(‘john’,’doe’)因為使用集合類型會破壞范式,所以大多數(shù)關系型數(shù)據(jù)庫不支持這樣的集合類型。例如,在傳統(tǒng)的數(shù)據(jù)模型中,struct可能會被多個具有外鍵關系的表存儲。破壞范式的實際問題即造成了數(shù)據(jù)冗余,以致于耗費不必要的硬盤空間,且當數(shù)據(jù)發(fā)生改變的時候,將導致冗余數(shù)據(jù),存在潛在的數(shù)據(jù)不一致。然而,大數(shù)據(jù)系統(tǒng),犧牲范式以獲得更高的計算吞吐量。當處理TB、PB級的數(shù)據(jù)時,最快的磁盤磁頭尋道是必要的,記錄中嵌入的集合可以獲得更短的尋道時間,而尋找外鍵關系需要花費更多的尋道時間。

Hive的復雜數(shù)據(jù)類型-集合數(shù)據(jù)類型P43例1:下面是一張?zhí)摌嫷娜肆Y源應用程序中的員工表:createtableemployees(name string,salary float,subordinates array<string>,deductions map<string,float>,address struct<street:string,city:string,state:string,zip:int>)思考:請分析該表的內(nèi)容和結構,和傳統(tǒng)關系型數(shù)據(jù)庫數(shù)據(jù)存儲有什么區(qū)別?數(shù)據(jù)類型

P43關系型數(shù)據(jù)庫數(shù)據(jù)表的字段類型不能是array類型、map類型以及struct類型Hive中默認的記錄和字段分隔符JohnDoe^A100000.0^AMarySmith^BToddJones^AFederalTaxes^C.2^BStateTaxes^C.05^BInsurance^C.1^A1MichiganAve.^BChicago^BIL^B60600MarySmith^A80000.0^ABillKing^AFederalTaxes^C.2BStateTaxes^C.05BInsurance^C.1^A100OntarioSt.^BChicago^BIL^B60601ToddJones^A70000.0^AFederalTaxes^C.15^BStateTaxes^C.03^BInsurance^C.1^A200ChicagoAve.^BOakPark^BIL^B60700BillKing^A60000.0^AFederalTaxes^C.15^BStateTaxes^C.03^BInsurance^C.1^A300ObscureDr.^BObscuria^BIL^B60100Hive中默認的記錄和字段分隔符hive

(default)>

create

table

employees(

>name

string,

>salary

float,>subordinates

array<string>,>decuctions

map<string,float>,>address

struct<street:string,city:string,state:string,zip:int>)

>

row

format

delimited

>

fields

terminated

by

‘\001’

//列是用什么切分

>

collection

items

terminated

by

‘\002’

//集合用什么切分

>

map

keys

terminated

by

‘\003’

//map的鍵和值用什么切分

>

lines

terminated

by

'\n'

>

stored

as

textfile;

這個SQL語句創(chuàng)建的表的結構和之前的那個表是一樣的,只不過是明確指定了分隔符。Hive目前不支持除’\n’以外的任何字符作為行分隔符。大多數(shù)情況下使用默認分隔符,除非在某些特殊限制情況下。例如,以下是以逗號最為字段分隔符的表定義:CREATETABLEsome_data(firstFLOAT,secondFLOAT,thirdFLOAT,ROWFORMATDELIMITEDFIELDSTERMINATEDBY',';創(chuàng)建表自主練習:本地創(chuàng)建文本文件本地文本文件-hive上傳本地文件到hive數(shù)據(jù)庫表本地文本文件-hive查看數(shù)據(jù)庫表的內(nèi)容1Hive支持各種長度的整型、浮點型、布爾型、任意長度的字符串類型、時間戳和二進制類型等。每一個類型都是在Java中執(zhí)行的,所以數(shù)據(jù)類型的一些行為細節(jié)跟相應的Java類型是一樣的。Hive支持structs,maps,arrays這三種集合類型。集合類型遵循Java對于泛型的語法規(guī)定。例如,MAP<STRING,FLOAT>表示映射中的每一個

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論