HIVE--hive优化系列(一)(存储方面)

存储优化

数据存储方式

行式存储:
hdfs上一个block存储一或多行数据。
按行压缩,压缩性能受字段类型影响
字段查询:select id,name from table_emp;
#####全表扫描,字段拼接,效率低。
全表查询:select * from table_emp;
#####直接展现数据,效率高。

列式存储:
hdfs上一个block一列或多列数据。
按列压缩,每一列相同数据类型,压缩性能好。
字段查询:select id,name from table_emp;
#####扫描部分字段,直接展现,效率高。
全表查询:select * from table_emp;
#####将分散的行重组, 效率低。

而大数据领域的全表查询情况较少,所以列式存储更加适合。

存储格式详解

  1. textfile

行式存储默认的存储格式
不便于数据的解析,也不具备随机读写的能力,但它却比较通用

  1. sequencefile

行式存储
每条record包含record legth、key length、key、value等四部分。
多了冗余信息,所以存储相同的数据,sequencefile比textfile略大。
但正是因为这些冗余信息,使其具备随机读写的能力
该存储格式压缩时压缩只有value。
在这里插入图片描述

  1. rcfile

facebook开源,比标准行式存储节约10%的空间。
先水平划分按行存储的row group,row group中再按列存储数据

  1. ORC

优化过后的RCFile。可作用于表或者表的分区。
先在水平上划分为多个按行存储的Stripe(250MB)(每个stripes由多组行数据组成的)。Row Data中再按列存储数据。
Index Data记录的是整型数据最大值最小值、字符串数据前后缀信息,每个列的位置等等。
这就使得查询十分得高效,默认每一万行数据建立一个Index Data。
ORC存储大小为TEXTFILE的40%左右,使用压缩则可以进一步将这个数字降到10%~20%。
orc默认使用zlip的压缩格式,可以支持zlip和snappy压缩格式。
在这里插入图片描述

  1. parquet

存储大小为TEXTFILE的60%~70%,压缩后在20%到30%之间

总结:目前在开源实现中,最有名的列式存储引擎莫过于Parquet和ORC,并且他们都是Apache的顶级项目。当使用的时候,最好使用ORC和parquet存储方式,ORC优于parquet

Parquet http://parquet.apache.orgOrc http://orc.apache.org
发展状态目前都是Apache开源的顶级项目,列式存储引擎同parquet
开发语言javajava
列编码支持多种编码,字典,RLE,Delta等支持主流编码,与Parquet类似
修改操作不支持支持
支持索引粗粒度索引 block/group/chunk级别统计信息粗粒度索引 file/stripe/row级别统计信息,不能精确到列建立索引
压缩比ORC更高
ACID不支持支持

后记

敬请期待后面系列文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值