【Hive】Hive的數據類型

Hive中數據類型可以分爲基本數據類型和複合數據類型。這些數據類型都是用Java實現的。

1. 基本數據類型

類型名稱 描述 舉例
boolean true/false true
tinyint 1byte有符號整數 30
smallint 2byte有符號整數 30
int 4byte有符號整數 30
bigint 8byte有符號整數 30
float 4byte單精度浮點數 1.0
double 8byte單精度浮點數 1.0
string 字符串(無長度限制) ‘hello world’
varchar 字符串(1-65355位,超長截斷) ‘abc’
timestamp(v0.8.0+) 整數,浮點數或字符串 123345677(Unix新紀元秒數);
123345677.123456789(Unix新紀元秒+納秒數);
‘2020-06-11 20:39:35.123456789’(JDBC 所兼容的java.sql.Timestamp時間格式)
date 日期 20200611

2. 複合數據類型

類型名稱 描述 舉例
array 字段類型必須相同 array(1,2,3)
map 鍵值對 map(name:zhangsan,age:12)
struct 字段類型可以不同 strunct(‘a’,1,2,3)

下面舉例說明如何使用複合數據類型建表,以及如何查詢複合數據類型的數據:

2.1 創建表
create table myhive.complex
(id int,
 profession ARRAY<string>,
 info map<string,string>,
 address struct<province:string, city:string, district:string>)
row format delimited fields terminated by ' '
collection items terminated by '#'
map keys terminated by ':';
2.2 導入數據
vi /home/hadoop/data/hiveData/complex.txt
#插入如下數據
1 teacher#driver name:john#age:28 shandong#qingdao#huangdaoqu

表中導入數據
load data local inpath '/home/hadoop/data/hiveData/complex.txt' into table myhive.complex;
2.3 查詢數據
#array類型按下標查詢
select id,profession[0],profession[1] from myhive.complex;

#map類型按key查詢
select id,info['name'] as name, info['age'] as age from myhive.complex;

#struct類型按key查詢
select id,address.province, address.city, address.district from myhive.complex;

總結

對於Hive而言,有時並不太瞭解被推送到系統中的數據,所以採用相對不嚴格的數據類型會好一些,這樣可以避免數據在導入時不被截斷。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章