Hive的內置數據類型可以分為兩大類:(1)、基礎數據類型;(2)、復雜數據類型。其中,基礎數據類型包括:TINYINT,SMALLINT,INT,BIGINT,BOOLEAN,FLOAT,DOUBLE,STRING,BINARY,TIMESTAMP,DECIMAL,CHAR,VARCHAR,DATE。下面的表格列出這些基礎類型所占的字節以及從什么版本開始支持這些類型。
數據類型 | 所占字節 | 開始支持版本 |
TINYINT | 1byte,-128 ~ 127 | ? |
SMALLINT | 2byte,-32,768 ~ 32,767 | ? |
INT | 4byte,-2,147,483,648 ~ 2,147,483,647 | ? |
BIGINT | 8byte,-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 | ? |
BOOLEAN | ? | ? |
FLOAT | 4byte單精度 | ? |
DOUBLE | 8byte雙精度 | ? |
STRING | ? | ? |
BINARY | ? | 從Hive0.8.0開始支持 |
TIMESTAMP | ? | 從Hive0.8.0開始支持 |
DECIMAL | ? | 從Hive0.11.0開始支持 |
CHAR | ? | 從Hive0.13.0開始支持 |
VARCHAR | ? | 從Hive0.12.0開始支持 |
DATE | ? | 從Hive0.12.0開始支持 |
復雜類型包括ARRAY,MAP,STRUCT,UNION,這些復雜類型是由基礎類型組成的。
ARRAY:ARRAY類型是由一系列相同數據類型的元素組成,這些元素可以通過下標來訪問。比如有一個ARRAY類型的變量fruits,它是由['apple','orange','mango']組成,那么我們可以通過fruits[1]來訪問元素orange,因為ARRAY類型的下標是從0開始的;
MAP:MAP包含key->value鍵值對,可以通過key來訪問元素。比如”userlist”是一個map類型,其中username是key,password是value;那么我們可以通過userlist['username']來得到這個用戶對應的password;
STRUCT:STRUCT可以包含不同數據類型的元素。這些元素可以通過”點語法”的方式來得到所需要的元素,比如user是一個STRUCT類型,那么可以通過user.address得到這個用戶的地址。
UNION: UNIONTYPE,他是從Hive 0.7.0開始支持的。
MAP:MAP包含key->value鍵值對,可以通過key來訪問元素。比如”userlist”是一個map類型,其中username是key,password是value;那么我們可以通過userlist['username']來得到這個用戶對應的password;
STRUCT:STRUCT可以包含不同數據類型的元素。這些元素可以通過”點語法”的方式來得到所需要的元素,比如user是一個STRUCT類型,那么可以通過user.address得到這個用戶的地址。
UNION: UNIONTYPE,他是從Hive 0.7.0開始支持的。
創建一個包含復制類型的表格可以如下
- CREATE?TABLE?employees?(??
- ????name?STRING,??
- ????salary?FLOAT,??
- ????subordinates?ARRAY<STRING>,??
- ????deductions?MAP<STRING,?FLOAT>,??
- ????address?STRUCT<street:STRING,?city:STRING,?state:STRING,?zip:INT>??
- )?PARTITIONED?BY?(country?STRING,?state?STRING); ?