Hive支持的數(shù)據(jù)類型

基本數(shù)據(jù)類型:

數(shù)據(jù)類型 長度 例子
TINYINT 1byte有符號整數(shù) 20
SMALLINT 2byte有符號整數(shù) 20
INT 4byte有符號整數(shù) 20
BIGINT 8byte有符號整數(shù) 20
BOOLEAN 布爾類型,true或者false TRUE
FLOAT 單精度浮點數(shù) 3.14159
DOUBLE 雙精度浮點數(shù) 3.14159
STRING 字符系列.可以指定字符集。可使用單引號或者雙引號 'now is the time',"for all good time"
TIMESTAMP(v0.8.0+) 整數(shù),浮點數(shù)或者字符串 1327882394(Unix 新紀元秒),1327882394.123456789(Unix新紀元并跟隨有納秒數(shù))和"2012-02-03 12:34:56.123456789"(JDBC所兼容的java.sql.Timestamp時間格式
BINARY(v0.8.0+) 字節(jié)數(shù)組

集合數(shù)據(jù)類型:

數(shù)據(jù)類型 描述 字母語法示例
STRUCT 和C語言中的struct或者"對象"類似,都可以通過"點"符號訪問元素內(nèi)容。例如,如果某個列的數(shù)據(jù)類型是STRUCT{first STRING,last STRING},那么第1個元素可以通過 字段名.first 來引用 struct('John','Doe')
MAP MAP是一組鍵-值對元素集合,使用數(shù)組表示法(例如['key'])可以訪問元素。例如,如果某個列的數(shù)據(jù)類型是MAP,其中鍵->值對是 'first'->'John'和'last'->'Doe',那么可以通過 字段名['last']獲取最后1個元素 map('first','John','last','Doe')
ARRAY 數(shù)組是一組具有相同類型和名稱的變量的集合。這些變量稱為數(shù)組的元素,每個數(shù)組元素都有一個編號,編號從零開始。例如,數(shù)組值為['John','Doe'],那么第2個元素可以通過 數(shù)組名[1]進行引用 Array('John','Doe')

大多數(shù)的關系型數(shù)據(jù)庫如Oracle,SQL Server,MySQL并不支持這些集合數(shù)據(jù)類型,因為使用它們會趨向于破壞標準格式。例如,在傳統(tǒng)數(shù)據(jù)模型中,structs可能需要多個不同的表拼裝而成,表間需要適當?shù)厥褂猛怄I來進行連接。

破壞標準格式所帶來的一個實際問題是會增大數(shù)據(jù)冗余的風險,進而導致消耗不必要的磁盤空間,還有可能造成數(shù)據(jù)不一致,因為當數(shù)據(jù)
發(fā)生改變時冗余的拷貝數(shù)據(jù)可能無法進行相應的同步。

然而,在大數(shù)據(jù)系統(tǒng)中,不遵循標準格式的一個好處是可以提供更高吞吐量的數(shù)據(jù)。當處理的數(shù)據(jù)的量級是T或者P時,以最少的"頭部尋址"來從磁盤上掃描數(shù)據(jù)是非常不要的。按數(shù)據(jù)集進行封裝的話可以通過減少尋址次數(shù)來提供查詢的速度。而如果根據(jù)外鍵關系關聯(lián)的話則需要磁盤間的尋址操作,這樣會有非常高的性能消耗。

我們以創(chuàng)建一張表的數(shù)據(jù)演示一下如何使用這些數(shù)據(jù)類型:

CREATE TABLE employees(
    name         STRING,
    salary       FLOAT,
    subordinates ARRAY<STRING>,
    deductions   MAP<STRING,FLOAT>,
    address     STRUCT<street:STRING,city:STRING,state:STRING,zip:INT
);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容