hive存储的文件格式对比

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格式的优势较明显。

猜你喜欢

转载自www.cnblogs.com/bjxdd/p/12359030.html