(本文是基於多篇文章根據個人理解進行的整合,參考的文章見末尾的整理)
數據類型
Hive支持兩種數據類型,一類叫原子數據類型,一類叫復雜數據類型。原子數據類型包括數值型、布爾型和字符串類型,具體如下表所示:
原子數據類型包括數值型、布爾型和字符串類型,具體如下表所示:
基本數據類型 |
||
類型 |
描述 |
示例 |
TINYINT |
1個字節(8位)有符號整數 |
1 |
SMALLINT |
2字節(16位)有符號整數 |
1 |
INT |
4字節(32位)有符號整數 |
1 |
BIGINT |
8字節(64位)有符號整數 |
1 |
FLOAT |
4字節(32位)單精度浮點數 |
1.0 |
DOUBLE |
8字節(64位)雙精度浮點數 |
1.0 |
BOOLEAN |
true/false |
true |
STRING |
字符串 |
‘xia’,”xia” |
hive不支持日期類型,在hive里日期都是用字符串來表示的,而常用的日期格式轉化操作則是通過自定義函數進行操作。
hive是用java開發的,hive里的基本數據類型和java的基本數據類型也是一一對應的,除了string類型。有符號的整數類型:TINYINT、SMALLINT、INT和BIGINT分別等價於java的byte、short、int和long原子類型,它們分別為1字節、
2字節、4字節和8字節有符號整數。Hive的浮點數據類型FLOAT和DOUBLE,對應於java的基本類型float和double類型。而hive的BOOLEAN類型相當於java的基本數據類型boolean。
對於hive的String類型相當於數據庫的varchar類型,該類型是一個可變的字符串,不過它不能聲明其中最多能存儲多少個字符,理論上它可以存儲2GB的字符數。
Hive支持基本類型的轉換,低字節的基本類型可以轉化為高字節的類型,例如TINYINT、SMALLINT、INT可以轉化為FLOAT,而所有的整數類型、FLOAT以及STRING類型可以轉化為DOUBLE類型,這些轉化可以從java語言的類型轉化考慮,因為hive就是用java 編寫的。當然也支持高字節類型轉化為低字節類型,這就需要使用hive的自定義函數CAST了。
復雜數據類型包括數組(ARRAY)、映射(MAP)和結構體(STRUCT),具體如下表所示:
復雜數據類型 |
||
類型 |
描述 |
示例 |
ARRAY |
一組有序字段。字段的類型必須相同 |
Array(1,2) |
MAP |
一組無序的鍵/值對。鍵的類型必須是原子的,值可以是任何類型,同一個映射的鍵的類型必須相同,值得類型也必須相同 |
Map(‘a’,1,’b’,2) |
STRUCT |
一組命名的字段。字段類型可以不同 |
Struct(‘a’,1,1,0) |
SQL 覆蓋范圍: SQL 92 with Extensions
參考:
Hive介紹 http://www.cnblogs.com/sharpxiajun/archive/2013/06/02/3114180.html
Hive的數據類型和數據模型 http://www.cnblogs.com/sharpxiajun/archive/2013/06/03/3114560.html
Hive內表與外表詳述 http://www.aboutyun.com/thread-7458-1-1.html
Hive基礎之分區和桶 http://my.oschina.net/leejun2005/blog/178631
Hive的體系結構 http://blog.csdn.net/zhoudaxia/article/details/8855937
Hive的元數據庫配置,metadata相關 http://www.2cto.com/database/201411/352706.html
Hadoop Hive SQL語法詳解 http://blog.csdn.net/hguisu/article/details/7256833
Hive幾種數據導入方式 http://www.iteblog.com/archives/94
Hive專欄 http://www.iteblog.com/archives/category/hive
Hive專欄 http://my.oschina.net/leejun2005/blog?catalog=384549