HIVE存储格式详解
目前hive常用的存储格式
STORED AS (TextFile|RCFile|SequenceFile|AVRO|ORC|Parquet)
TEXTFILE, SEQUENCEFILE, RCFILE, ORC, PARQUET, AVRO
下面是他们的详细对比:
格式 | 存储方式 | 压缩方式 | 具体特点 |
TEXTFILE | 按行存储 | Gzip,Bzip2 | 存储空间消耗比较大,并且压缩的text 无法分割和合并 查询的效率最低,可以直接存储,加载数据的速度最高 |
SEQUENCEFILE | 按行存储 | NONE,RECORD,BLOCK。Record压缩率低,一般建议使用BLOCK压缩 | 存储空间消耗最大,压缩的文件可以分割和合并 查询效率高,需要通过text文件转化来加载 |
RCFILE | 按列存储 |
存储空间最小,
查询的效率最高 ,
需要通过text文件转化来加载,
加载的速度最低。
压缩快 快速列存取。
读记录尽量涉及到的block最少
读取需要的列只需要读取每个row group 的头部定义。
读取全量数据的操作 性能可能比sequencefile没有明显的优势
|
|
ORC | 按列存储 | zlib(default),snappy | 压缩快,快速列存取 ,效率比rcfile高,是rcfile的改良版本 |
PARQUET | 按列存储 | 相对于PRC,Parquet压缩比较低,查询效率较低,不支持update、insert和ACID.但是Parquet支持Impala查询引擎 | |
AVRO | 按行存储 |
参考资料:
https://zh.hortonworks.com/blog/orcfile-in-hdp-2-better-compression-better-performance/
https://www.cnblogs.com/skyl/p/4740301.html
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+ORC
http://dwgeek.com/hive-different-file-formats-text-sequence-rc-avro-orc-parquet-file.html/