1. 程式人生 > >Hive-5-Hive SQL之資料型別和儲存格式

Hive-5-Hive SQL之資料型別和儲存格式

原文地址:https://www.cnblogs.com/qingyunzong/p/8733924.html

一、資料型別

1.1、基本資料型別

Hive 支援關係型資料中大多數基本資料型別,和其他的SQL語言一樣,這些都是保留字。需要注意的是所有的這些資料型別都是對Java中介面的實現,因此這些型別的具體行為細節和Java中對應的型別是完全一致的。例如,string型別實現的是Java中的String,float實現的是Java中的float,等等。

1.2、複雜型別

二、儲存格式

Hive會為每個建立的資料庫在HDFS上建立一個目錄,該資料庫的表會以子目錄形式儲存,表中的資料會以表目錄下的檔案形式儲存。

對於default資料庫,預設的預設資料庫沒有自己的目錄,default資料庫下的表預設存放在/user/hive/warehouse目錄下。

2.1、textfile

textfile為預設格式,儲存方式為行儲存。資料不做壓縮,磁碟開銷大,資料解析開銷大。 

2.2、SequenceFile

SequenceFile是Hadoop API提供的一種二進位制檔案支援,其具有使用方便、可分割、可壓縮的特點。 

SequenceFile支援三種壓縮選擇:NONE, RECORD, BLOCK。 Record壓縮率低,一般建議使用BLOCK壓縮。 

2.3、RCFile

一種行列儲存相結合的儲存方式。 

2.4、ORCFile

資料按照行分塊,每個塊按照列儲存,其中每個塊都儲存有一個索引。hive給出的新格式,屬於RCFILE的升級版,效能有大幅度提升,而且資料可以壓縮儲存,壓縮快 快速列存取。 

2.5、Parquet

Parquet也是一種行式儲存,同時具有很好的壓縮效能;同時可以減少大量的表掃描和反序列化的時間。

三、資料格式

當資料儲存在文字檔案中,必須按照一定格式區別行和列,並且在Hive中指明這些區分符。Hive預設使用了幾個平時很少出現的字元,這些字元一般不會作為內容出現在記錄中。

Hive預設的行和列分隔符如下表所示: