1. 程式人生 > >Hive 5. 資料型別

Hive 5. 資料型別

資料型別

Hive 中支援大多數的基本資料型別,和3個其他資料庫中燒少有的集合資料型別。
基本資料型別包括 numeric, Boolean, string, timstamp等等.
複雜資料型別有: arrays,maps,structs。
見下表:

image

基本資料型別

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開始的標誌選取相應的值。

資料轉型

image

  • 整型遵循小轉大。可轉成文字。
  • 文字型別之間可以隨意轉換。
  • 上面這些都可以轉型為 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!!