一、 Hive文件存储格式
Hive支持的存储格式有: textfile、sequencefile、orc和parquet这几种格式。Hive 的存储方式有列式存储和行式存储。 textfile和sequencefile的存储格式是给予行存储的;而orc和parquet是基于列存储的(实质上也不是完全的列存储。
关于行式存储和列式存储:
行存储的特点: 查询满足条件的一整行数据的时候, 列存储则需要去每个聚集的字段找到对应的每个列的值,行存储只需要找到其中一个值,其余的值都在相邻地方,所以此时行存储查询的速度更快。
列存储的特点: 因为每个字段的数据聚集存储,在查询只需要少数几个字段的时候,能大大减少读取的数据量;每个字段的数据类型一定是相同的,列式存储可以针对性的设计更好的设计压缩算法。
textfile 是hive的默认格式,因为对于这种格式,数据不做压缩,所以对磁盘容量和数据的解析都是一个挑战。当然也可以结合压缩算法使用,比如 gzip、bzip2等。压缩的text文件hive无法进行合并或拆分。
sequencefile是一种二进制文件,以K-V的形式序列化到文件里,这种文件格式是可压缩和可分割的。
orc是hive 0.11版本里引入的一种新的存储格式。这种格式会将数据按行来进行分块,每个块按列进行存储。压缩是非常快的。
parquet是面向分析性业务的列式存储格式,是以二进制方式进行存储,所以不能直接进行读取。
sequencefile行存储
- 存储空间的消耗最大
- 压缩的文件可以分割和合并
- 查询效率高,但需要通过text文件转化来加载
orc列存储 1.节省存储空间 2.查询效率高 3.压缩快parquet列存储
- 压缩效率高
- 查询效率高
- 支持Impala查询引擎
三、如何选择hive的存储格式
hive 表的数据存储格式建议选择orc或者parquet,压缩方式建议选snappy。