Hive數據類型和數據格式

Hive支持關係型數據庫中的大多數基本數據類型,同時也支持關係型數據庫中很少出現的3中集合數據類型:
基本數據類型:
tinyint(1byte)、smallint(2byte)、int(4byte)、bigint(8byte)、boolean(true|false)、float(單精度浮點數)、double(雙精度浮點數)、string(字符序列)、timestamp(整數、浮點數或者字符串)、binary(字節數組)

集合數據類型:
struct:和C語言中的struct對象一樣,都通過“點”符號訪問元素內容,eg: struct{first string , last string},訪問時通過:字段名.first來引用
map:是一組鍵-值對元組集合,可通過字段名['key']來訪問
array:是一組具有相同類型和名稱的變量的集合,編號從0開始,通過下標訪問

文本文件數據編碼:
逗號分隔符的文件:csv
製表符跟個的文件:tsv

hive中默認的記錄和字段分隔符
\n        換行符
^A      ctrl+A 用於分隔字段(列),create table時可以使用八進制編碼\001表示
^B      用於分隔Array或者Struct中的元素,或用於Map中鍵-值對之間的分隔符,八進制編碼\002表示
^C      用於Map中鍵和值之間的分隔 ,八進制編碼\003表示

create table emp {
name string,
salary float,
subordinates array<string>,
deductions  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'
line terminated by '\n'
stored as textfile;

讀時模式:
當用戶向傳統數據庫中加載數據的時候,數據庫對於存儲具有完全的控制能力,數據庫就是"守門人"。傳統數據庫是寫入模式,即數據在寫入數據庫時對模式進行檢查。
Hive對於存儲沒有這樣的控制,Hive不會在數據加載的時候進行驗證,而是在查詢的時候進行,也就是讀時模式。
那麼如果模式和文件內容不匹配怎麼辦呢?
如果記錄中的字段個數或者字段類型不匹配的話,那麼用戶會在查詢結果中看到多個null值

發佈了43 篇原創文章 · 獲贊 1 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章