Hive之資料型別
基礎資料型別與java資料型別一致
整型
TINYINT — 微整型,只佔用1個位元組,只能儲存0-255的整數。
SMALLINT– 小整型,佔用2個位元組,儲存範圍–32768 到 32767。
INT– 整型,佔用4個位元組,儲存範圍-2147483648到2147483647。
BIGINT– 長整型,佔用8個位元組,儲存範圍-2^63到2^63-1。
Float和double
float : 單精度浮點數 double : 雙精度浮點數
兩者的主要區別如下:
1.在記憶體中佔有的位元組數不同
單精度浮點數在機記憶體佔4個位元組
雙精度浮點數在機記憶體佔8個位元組
2.有效數字位數不同
單精度浮點數有效數字8位
雙精度浮點數有效數字16位
3.數值取值範圍
單精度浮點數的表示範圍:-3.40E+38~3.40E+38
雙精度浮點數的表示範圍:-1.79E+308~-1.79E+308
4.在程式中處理速度不同
一般來說,CPU處理單精度浮點數的速度比處理雙精度浮點數快,如果不宣告,預設小數為double型別,所以如果要用float的話,必須進行強轉
例如:float a=1.3; 會編譯報錯,正確的寫法 float a = (float)1.3;或者float a = 1.3f;(f或F都可以不區分大小寫)。
timestamps
新增timestamps可以是整數,也就是距離unix新紀元時間(1970年1月1日午夜12點)的秒數;也可以是浮點數,即距離unix新紀元時間的秒數,精確到納秒(小數點後9位);還可以是字串,即JDBC所約定的時間字串格式,格式為YYYY-MM-DD hh:mm:ss.fffffffff。
Timestamps表示utc協調世界時。不同時區互相轉換內建函式to_utc_timestamps和from_utc_timestamps。
集合資料型別
Struct,物件,定義struct(street:string,city:string,zip:int)
Map,鍵值對,定義map(string,float)
Array,陣列,定義array(string)
資料型別轉換
Case(s as int)
說明:如果轉換格式不規則會返回null,建議優先使用取整函式轉換