Hive 5. 資料型別
阿新 • • 發佈:2019-01-25
資料型別
Hive 中支援大多數的基本資料型別,和3個其他資料庫中燒少有的集合資料型別。
基本資料型別包括 numeric, Boolean, string, timstamp等等.
複雜資料型別有: arrays,maps,structs。
見下表:
基本資料型別
Hive 的基本資料型別與 Java 的資料型別相合,即使一些名字是受了 Mysql 型別的名字的影響。
與Java中的對應關係:
Hive | Java | 位元組數 |
---|---|---|
INTYINT | byte | 1 |
SMALLINT | short | 2 |
INT | int | 4 |
BIGINT | long | 8 |
FLOAT | float | 32 bit |
DOUBLE | double | 64 bit |
STRING | String |
除此之外,DECIMAL 與 oracle 的 number 型別相似。預設長度為10位整數,最大允許長度為 38。
DECIMAL(10,4)
STRING 型別是一個沒有長度限制的字串(不過理論上是 2G),VARCHAR 與 CAHR 就不說了。
TIMESTAMP 儲存的是納秒精度的時間戳。可以使用 to_utc_timestamp 和 from_utc_timestamp 來與 DATE 型別互相轉換。
集合資料型別
這裡要說的是 UNION, 他可以儲存由多個不同資料型別組成的集合。往集合中放入的資料必須與集合中的各個資料型別相匹配,且使用從1開始的標誌選取相應的值。
資料轉型
- 整型遵循小轉大。可轉成文字。
- 文字型別之間可以隨意轉換。
- 上面這些都可以轉型為 DOUBLE 或者 DECIMAL。
- 布林不能轉成其他型別。
- TIMESTAMP 與 DATE 前文提到。
一個例子
create table complex (
c1 array<int>,
c2 map<string, int>,
c3 struct <a:string, b:int, c:double>
c4 uniontype<string, int>
);
查詢的例子:
hive> select c1[0], c2['b'], c3.c, c4 from complex;
1 2 1.0 {1:63}
End!!