Hive的文件存儲格式包括:textfile, sequencefile, rcfile, orc, parquet
textfile
默認的文件格式,行存儲。建表時不指定存儲格式即為textfile,導入數據時把數據文件拷貝至hdfs不進行處理。
優點:最簡單的數據格式,便於和其他工具(Pig, grep, sed, awk)共享數據,便於查看和編輯;加載較快。
缺點:耗費存儲空間,I/O性能較低;Hive不進行數據切分合並,不能進行並行操作,查詢效率低。
適用於小型查詢,查看具體數據內容的測試操作。
sequencefile
含有鍵值對的二進制文件,行存儲。
優點:可壓縮、可分割,優化磁盤利用率和I/O;可並行操作數據,查詢效率高;
缺點:存儲空間消耗最大;對於Hadoop生態系統之外的工具不適用,需要通過text文件轉化加載。
適用於數據量較小、大部分列的查詢。
rcfile
行列式存儲。先將數據按行分塊,同一個record在一個塊上,避免讀一條記錄需要讀多個block;然后塊數據列式存儲。
優點:可壓縮,高效的列存取;查詢效率較高。
缺點:加載時性能消耗較大,需要通過text文件轉化加載;讀取全量數據性能低。
orc
優化后的rcfile,行列式存儲。
優缺點與rcfile類似,查詢效率最高。
適用於Hive中大型的存儲、查詢。
parquet
列存儲。
優點:更高效的壓縮和編碼;不與任何數據處理技術綁定,可用於多種數據處理框架(Hive, Impala, Presto查詢引擎;MapReduce, Spark計算框架;Avro, Thrift, PB數據模型 )。
缺點:不支持update, insert, delete, ACID
適用於字段數非常多,無更新,只取部分列的查詢。
表的字段個數不多時,文件按塊進行壓縮,行存儲對於處理重復數據時比較高效;
表的字段個數成百上千時,而只需查詢其中的較少字段時,列存儲可較大提高效率。
數據倉庫一次寫入,多次讀寫,orc格式的優勢較明顯。