1. 程式人生 > >HIVE資料型別及儲存格式

HIVE資料型別及儲存格式

https://www.cnblogs.com/qingyunzong/category/1191578.html
一、資料型別
1、基本資料型別
Hive 支援關係型資料中大多數基本資料型別
boolean true/false TRUE
tinyint 1位元組的有符號整數 -128~127 1Y
smallint 2個位元組的有符號整數,-32768~32767 1S
int 4個位元組的帶符號整數 1
bigint 8位元組帶符號整數 1L
float 4位元組單精度浮點數 1.0
double 8位元組雙精度浮點數 1.0
deicimal 任意精度的帶符號小數 1.0
String 字串,變長 “a”,’b’
varchar 變長字串 “a”,’b’
char 固定長度字串 “a”,’b’
binary 位元組陣列 無法表示
timestamp 時間戳,納秒精度 122327493795
date 日期 ‘2018-04-07’
和其他的SQL語言一樣,這些都是保留字。需要注意的是所有的這些資料型別都是對Java中介面的實現,因此這些型別的具體行為細節和Java中對應的型別是完全一致的。例如,string型別實現的是Java中的String,float實現的是Java中的float,等等。
2、複雜型別
array 有序的的同類型的集合 array(1,2)
map key-value,key必須為原始型別,value可以任意型別 map(‘a’,1,’b’,2)
struct 欄位集合,型別可以不同 struct(‘1’,1,1.0), named_stract(‘col1’,’1’,’col2’,1,’clo3’,1.0)
二、儲存格式
Hive會為每個建立的資料庫在HDFS上建立一個目錄,該資料庫的表會以子目錄形式儲存,表中的資料會以表目錄下的檔案形式儲存。對於default資料庫,預設的預設資料庫沒有自己的目錄,default資料庫下的表預設存放在/user/hive/warehouse目錄下。
(1)textfile
textfile為預設格式,儲存方式為行儲存。資料不做壓縮,磁碟開銷大,資料解析開銷大。
(2)SequenceFile
SequenceFile是Hadoop API提供的一種二進位制檔案支援,其具有使用方便、可分割、可壓縮的特點。
SequenceFile支援三種壓縮選擇:NONE, RECORD, BLOCK。 Record壓縮率低,一般建議使用BLOCK壓縮。
(3)RCFile
一種行列儲存相結合的儲存方式。
(4)ORCFile
資料按照行分塊,每個塊按照列儲存,其中每個塊都儲存有一個索引。hive給出的新格式,屬於RCFILE的升級版,效能有大幅度提升,而且資料可以壓縮儲存,壓縮快 快速列存取。
(5)Parquet
Parquet也是一種行式儲存,同時具有很好的壓縮效能;同時可以減少大量的表掃描和反序列化的時間。
三、資料格式
當資料儲存在文字檔案中,必須按照一定格式區別行和列,並且在Hive中指明這些區分符。Hive預設使用了幾個平時很少出現的字元,這些字元一般不會作為內容出現在記錄中。
Hive預設的行和列分隔符如下表所示。
分隔符
描述
\n 對於文字檔案來說,每行是一條記錄,所以\n 來分割記錄
^A (Ctrl+A) 分割欄位,也可以用\001 來表示
^B (Ctrl+B) 用於分割 Arrary 或者 Struct 中的元素,或者用於 map 中鍵值之間的分割,也可以用\002 分割。
^C 用於 map 中鍵和值自己分割,也可以用\003 表示。