Hive支持以下六种文件格式:TextFile、RCFile、SequenceFile、AVRO、ORC和Parquet。在建表时使用STORED AS (TextFile|RCFile|SequenceFile|AVRO|ORC|Parquet)来指定存储格式。
1.TextFile
TextFile每一行都是一条记录,每行都以换行符(\n)结尾。数据不做压缩,磁盘开销大,数据解析开销大。
TextFile可结合Gzip、Bzip2使用,但使用这种方式,hive不会对数据进行切分,从而无法对数据进行并行操作。使用方式如下所示:
set hive.exec.compress.output=true;
set mapred.output.compress=true;
set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;
set io.compression.codecs=org.apache.hadoop.io.compress.GzipCodec;
insert overwrite table textfile_table select * from textfile_table;
2.RCFile
存储方式:数据按行分块,每块按列存储
Record Columnar的缩写,是Hadoop中第一个列式存储格式。能够很好的压缩和快速的查询性能,但是不支持模式演进。是一种行列存储相结合的存储方式。
首先,其将数据按行分块,确保同一行的数据位于同一个块上,避免读一个记录需要读取多个block。其次,块数据列式存储,有利于数据压缩和快速的列存取,并且能跳过不必要的列读取。
3.SequenceFile
参考《Hive文件存储格式——SequenceFile》
4.AVRO
参考《Hive文件存储格式——AVRO》
5.ORC
参考《Hive文件存储格式——ORC》
6.Parquet
参考《Hive文件存储格式——Parquet》