Hive之儲存格式

潛水到明朝發表於2016-09-23

hive檔案儲存格式包括以下幾類:TEXTFILE、SEQUENCEFILE、RCFILE、自定義格式
其中TEXTFILE為預設格式,建表時不指定預設為這個格式,匯入資料時會直接把資料檔案拷貝到hdfs上不進行處理。SequenceFile,RCFile格式的表不能直接從本地檔案匯入資料,資料要先匯入到textfile格式的表中,然後再從TextFile表中用insert匯入到SequenceFile,RCFile表中。
1 TEXTFIEL
預設格式,資料不做壓縮,磁碟開銷大,資料解析開銷大。可結合Gzip、Bzip2使用(系統自動檢查,執行查詢時自動解壓),但使用這種方式,hive不會對資料進行切分,從而無法對資料進行並行操作。

示例:
hive (default) > create table user_id (user_id string)

          > stored as TextFile;

OK
Time taken: 0.143 seconds
2 SEQUENCEFILE
SequenceFile是Hadoop API提供的一種二進位制檔案支援,其具有使用方便、可分割、可壓縮的特點。SequenceFile支援三種壓縮選擇:NONE, RECORD, BLOCK。 Record壓縮率低,一般建議使用BLOCK壓縮。

示例:
hive (default)> create table user_id (user_id string)

        > stored as SequenceFile;               

OK
Time taken: 0.14 seconds
3 RCFILE
RCFILE是一種行列儲存相結合的儲存方式。首先,其將資料按行分塊,保證同一個record在一個塊上,避免讀一個記錄需要讀取多個block。其次,塊資料列式儲存,有利於資料壓縮和快速的列存取。
示例:
hive (default)> create table user_id (user_id string)

        > stored as RcFile;;                    

OK
Time taken: 0.174 seconds

4 自定義格式
當使用者的資料檔案格式不能被當前 Hive 所識別的時候,可以自定義檔案格式。使用者可以通過實現inputformat和 outputformat來自定義輸入輸出格式,由於目前使用的Hadoop版本為CDH,無法找到原始碼,自定義資料格式(如有解決方法,及時更新)


相關文章