1.基本數據類型
Hive數據類型 |
Java數據類型 |
長度 |
例子 |
TINYINT |
byte |
1byte有符號整數 |
20 |
SMALINT |
short |
2byte有符號整數 |
20 |
INT |
int |
4byte有符號整數 |
20 |
BIGINT |
long |
8byte有符號整數 |
20 |
BOOLEAN |
boolean |
布爾類型,true或者false |
TRUE FALSE |
FLOAT |
float |
單精度浮點數 |
3.14159 |
DOUBLE |
double |
雙精度浮點數 |
3.14159 |
STRING |
string |
字符系列。可以指定字符集。可以使用單引號或者雙引號。 |
‘now is the time’ “for all good men” |
TIMESTAMP |
|
時間類型 |
|
BINARY |
|
字節數組 |
|
注:Hive的String類型相當於數據庫的varchar類型,該類型是一個可變的字符串,不過它不能聲明其中最多能存儲多少個字符,理論上它可以存儲2GB的字符數。
2.集合數據類型
數據類型 |
描述 |
語法示例 |
STRUCT |
和c語言中的struct類似,都可以通過“點”符號訪問元素內容。例如,如果某個列的數據類型是STRUCT{first STRING, last STRING},那么第1個元素可以通過字段.first來引用。 |
struct() |
MAP |
MAP是一組鍵-值對元組集合,使用數組表示法可以訪問數據。例如,如果某個列的數據類型是MAP,其中鍵->值對是’first’->’John’和’last’->’Doe’,那么可以通過字段名[‘last’]獲取最后一個元素 |
map() |
ARRAY |
數組是一組具有相同類型和名稱的變量的集合。這些變量稱為數組的元素,每個數組元素都有一個編號,編號從零開始。例如,數組值為[‘John’, ‘Doe’],那么第2個元素可以通過數組名[1]進行引用。 |
Array() |
注:Hive有三種復雜數據類型ARRAY、MAP 和 STRUCT。ARRAY和MAP與Java中的Array和Map類似,而STRUCT與C語言中的Struct類似,它封裝了一個命名字段集合,復雜數據類型允許任意層次的嵌套。
示例:
1.創建本地測試文件 test.txt
songsong,bingbing_lili,xiao song:18_xiaoxiao song:19,hui long guan_beijing
yangyang,caicai_susu,xiao yang:18_xiaoxiao yang:19,chao yang_beijing
注意:MAP,STRUCT和ARRAY里的元素間關系都可以用同一個字符表示,這里用“_”。
2.Hive上創建測試表test
create table test( name string, friends array<string>, children map<string, int>, address struct<street:string, city:string> ) row format delimited
fields terminated by ',' collection items terminated by '_' map keys terminated by ':' lines terminated by '\n';
字段解釋:分隔符均是自己定義,不要重復!同種類型的數據分隔符只能指定一次:如map指定了為冒號 ‘:’,之后用map分隔符必須使用冒號
row format delimited
fields terminated by ',' -- 逗號 為列分隔符
collection items terminated by '_' -- MAP STRUCT 和 ARRAY 的分隔符(數據分割符號) ,它們都是容器
map keys terminated by ':' -- MAP中的key與value的分隔符
lines terminated by '\n'; -- 行分隔符
3.導入文本數據到測試表
hive (default)> load data local inpath ‘/opt/module/datas/test.txt’into table test;
4.訪問三種集合列里的數據,以下分別是ARRAY,MAP,STRUCT的訪問方式(各個數據類型查詢也不同!)
hive (default)> select friends[1],children['xiao song'],address.city from test where name="songsong"; OK _c0 _c1 city lili 18 beijing Time taken: 0.076 seconds, Fetched: 1 row(s)
注:
歡迎留言交流!我的大數據菜鳥交流群(本群剛起步,有你更精彩):875910806