Hive存储格式简单介绍

举报
kala_1314 发表于 2019/01/18 16:37:43 2019/01/18
【摘要】 一、 Hive文件存储格式 Hive支持的存储格式有: textfile、sequencefile、orc和parquet这几种格式。Hive 的存储方式有列式存储和行式存储。 textfile和sequencefile的存储格式是给予行存储的;而orc和parquet是基于列存储的(实质上也不是完全的列存储。 关于行式存储和列式存储: 行存储的特点: 查询满足条件的一整行数据的时候,...

一、 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是面向分析性业务的列式存储格式,是以二进制方式进行存储,所以不能直接进行读取。


二、几个格式的简单

存储格式存储方式特点
textfile行存储
  1. 存储空间的消耗比较大

  2. 压缩的text无法分割和合并

  3. 查询的效率最低,但加载数据的速度最高

sequencefile行存储
  1. 存储空间的消耗最大

  2. 压缩的文件可以分割和合并

  3. 查询效率高,但需要通过text文件转化来加载

orc列存储

   1.节省存储空间

   2.查询效率高

   3.压缩快

parquet列存储
  1. 压缩效率高 

  2. 查询效率高

  3. 支持Impala查询引擎


三、如何选择hive的存储格式

hive 表的数据存储格式建议选择orc或者parquet,压缩方式建议选snappy。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。