正文數據庫
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,等等。oop
二、複雜類型
類型 | 描述 | 示例 |
---|---|---|
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) |
2、存儲格式
Hive會爲每一個建立的數據庫在HDFS上建立一個目錄,該數據庫的表會以子目錄形式存儲,表中的數據會以表目錄下的文件形式存儲。對於default數據庫,默認的缺省數據庫沒有本身的目錄,default數據庫下的表默認存放在/user/hive/warehouse目錄下。post
(1)textfile
textfile爲默認格式,存儲方式爲行存儲。數據不作壓縮,磁盤開銷大,數據解析開銷大。 性能
(2)SequenceFile
SequenceFile是Hadoop API提供的一種二進制文件支持,其具備使用方便、可分割、可壓縮的特色。 htm
SequenceFile支持三種壓縮選擇:NONE, RECORD, BLOCK。 Record壓縮率低,通常建議使用BLOCK壓縮。 blog
(3)RCFile
一種行列存儲相結合的存儲方式。 索引
(4)ORCFile
數據按照行分塊,每一個塊按照列存儲,其中每一個塊都存儲有一個索引。hive給出的新格式,屬於RCFILE的升級版,性能有大幅度提高,並且數據能夠壓縮存儲,壓縮快 快速列存取。 接口
(5)Parquet
Parquet也是一種行式存儲,同時具備很好的壓縮性能;同時能夠減小大量的表掃描和反序列化的時間。
3、數據格式
當數據存儲在文本文件中,必須按照必定格式區別行和列,而且在Hive中指明這些區分符。Hive默認使用了幾個平時不多出現的字符,這些字符通常不會做爲內容出如今記錄中。
Hive默認的行和列分隔符以下表所示。
分隔符 | 描述 |
---|---|
\n | 對於文本文件來講,每行是一條記錄,因此\n 來分割記錄 |
^A (Ctrl+A) | 分割字段,也能夠用\001 來表示 |
^B (Ctrl+B) | 用於分割 Arrary 或者 Struct 中的元素,或者用於 map 中鍵值之間的分割,也能夠用\002 分割。 |
^C | 用於 map 中鍵和值本身分割,也能夠用\003 表示。 |