• 为了保证你在浏览本网站时有着更好的体验,建议使用类似Chrome、Firefox之类的浏览器~~
    • 如果你喜欢本站的内容何不Ctrl+D收藏一下呢,与大家一起分享各种编程知识~
    • 本网站研究机器学习、计算机视觉、模式识别~当然不局限于此,生命在于折腾,何不年轻时多折腾一下

hive文件存储格式对比

Sql admin 2年前 (2017-09-20) 1868次浏览 0个评论 扫描二维码

列式存储和行式存储

上图左边为逻辑表,右边第一个为行式存储,第二个为列式存储。

行存储的特点: 查询满足条件的一整行数据的时候,列存储则需要去每个聚集的字段找到对应的每个列的值,行存储只需要找到其中一个值,其余的值都在相邻地方,所以此时行存储查询的速度更快。
列存储的特点: 因为每个字段的数据聚集存储,在查询只需要少数几个字段的时候,能大大减少读取的数据量;每个字段的数据类型一定是相同的,列式存储可以针对性的设计更好的设计压缩算法。

Hive 中常用的存储格式

  1. textfile
    textfile 为默认格式,存储方式为行存储。
  2. ORCFile
    hive/spark 都支持这种存储格式,它存储的方式是采用数据按照行分块,每个块按照列存储,其中每个块都存储有一个索引。特点是数据压缩率非常高。

  3. Parquet
    Parquet 也是一种行式存储,同时具有很好的压缩性能;同时可以减少大量的表扫描和反序列化的时间。

根据不同的格式创建表

  1. textfile
    创建表

    create table textfile(
    ...
    ...
    ...
    )
    row format delimited fields terminated by '\t'
    stored as textfile;
    insert into table textfile select * from source_log;

    查看占用的磁盘空间

  2. orc
    创建表

    create table orc(
    ...
    ...
    ...
    )
    row format delimited fields terminated by '\t'
    stored as orc;
    insert into table orc select * from source_log;

    查看占用的磁盘空间

  3. parquet
    创建表

    create table parquet(
    ...
    ...
    ...
    )
    row format delimited fields terminated by '\t'
    stored as parquet;
    insert into table parquet select * from source_log;

    查看占用的磁盘空间

    磁盘空间占用大小比较
    orc(7.8M)<parquet(38.2M)<textfile(53.3M)

查询语句的比较

  1. textfile 表
    hive (count_log)> select id from textfile limit 30;

  2. orc 表
    hive (count_log)> select id from orc limit 30;

  3. parquet 表
    hive (count_log)> select id from parquet limit 30;

把设置存储格式和压缩结合使用,可以最大的减少存储空间。

转载自 http://www.jianshu.com/p/694f044d1c34

 


Deeplearn, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明hive 文件存储格式对比
喜欢 (0)
admin
关于作者:
互联网行业码农一枚/业余铲屎官/数码影音爱好者/二次元

您必须 登录 才能发表评论!