TEXTFILE
默认格式,行存储,导入数据时直接把数据文件拷贝到hdfs的hive表目录(hive location),数据文件可先经过gzip等压缩,再导hive表(系统自动检查,执行查询时自动解压),但使用这种方式,hive不会对数据进行切分,从而无法对数据进行并行操作.
优点:数据加载快(load数据快)
缺点:数据读取时磁盘开销大,即查询效率低
SEQUENCEFILE
二进制文件格式,以<key,value>的形式序列化到文件中,行存储,使用方便、可分割、可压缩。SequenceFile支持三种压缩选择:NONE,RECORD,BLOCK。Record压缩率低,一般建议使用BLOCK压缩
RCFILE
RCFILE是一种行列存储相结合的存储方式。首先,其将数据按行分块,保证同一个record在一个块上,避免读一个记录需要读取多个block。其次,块数据列式存储,有利于数据压缩和快速的列存取。rcfile存储空间最小,查询的效率最高
ORC File
ORC(Optimized Row Columnar)针对rcfile做了一些优化,提供一种更高效的方法来存储hive数据,高压缩高性能,ORC格式支持表分桶和一些复杂的数据类型,如:map等,
自定义格式
通过对InputFormat、OutputFormat、SerDe自定义,Hive能够与自定义的文档格式进行交互:
可以参考博客:http://www.kuqin.com/shuoit/20131130/336666.html
参考:http://www.cnblogs.com/skyl/p/4740301.html
默认格式,行存储,导入数据时直接把数据文件拷贝到hdfs的hive表目录(hive location),数据文件可先经过gzip等压缩,再导hive表(系统自动检查,执行查询时自动解压),但使用这种方式,hive不会对数据进行切分,从而无法对数据进行并行操作.
优点:数据加载快(load数据快)
缺点:数据读取时磁盘开销大,即查询效率低
SEQUENCEFILE
二进制文件格式,以<key,value>的形式序列化到文件中,行存储,使用方便、可分割、可压缩。SequenceFile支持三种压缩选择:NONE,RECORD,BLOCK。Record压缩率低,一般建议使用BLOCK压缩
RCFILE
RCFILE是一种行列存储相结合的存储方式。首先,其将数据按行分块,保证同一个record在一个块上,避免读一个记录需要读取多个block。其次,块数据列式存储,有利于数据压缩和快速的列存取。rcfile存储空间最小,查询的效率最高
ORC File
ORC(Optimized Row Columnar)针对rcfile做了一些优化,提供一种更高效的方法来存储hive数据,高压缩高性能,ORC格式支持表分桶和一些复杂的数据类型,如:map等,
一个ORC文件会被分成多个stripe:
自定义格式
通过对InputFormat、OutputFormat、SerDe自定义,Hive能够与自定义的文档格式进行交互:
可以参考博客:http://www.kuqin.com/shuoit/20131130/336666.html
SEQUENCEFILE,RCFILE,ORCFILE格式的表不能直接从本地文件导入数据,数据要先导入到textfile格式的表中, 然后再从表中用insert导入SequenceFile,RCFile,ORCFile表中.
可以先建立txtFile格式内部临时表tmp_testp,使用hdfs fs -put命令向tmp_testp表路径拷贝数据(不是load,Load Data时多一步Distcp操作),再建立ORC格式外部表http_orc,使用insert命令把tmp_test表导入http_orc中,最后删除掉临时表数据
参考:http://www.cnblogs.com/skyl/p/4740301.html