13、深入了解列式存储与Parquet文件格式

深入了解列式存储与Parquet文件格式

1. 列式存储概述

在处理数据存储时,常见的数据布局方式有行式存储和列式存储。行式存储是指在将数据写入I/O设备(如平面文件或关系数据库中的表)时,先写入第一行的所有字段,接着是第二行的所有字段,依此类推。大多数关系数据库默认采用这种方式写入表,像XML、JSON和Avro容器文件等数据序列化格式也通常采用行式存储。

列式存储则不同,它先按列、再按行来布局数据。即先写入所有记录中第一个字段的所有值,然后是第二个字段的值,以此类推。

列式存储有两大主要优势:
- 减少I/O操作 :读取列式数据的系统能够高效地提取部分列,从而减少I/O操作。而行式存储系统即使只需要一两个列,通常也需要读取整行数据。
- 数据压缩优化 :在写入列式数据时,可以采用游程编码和位打包等优化技术,有效压缩写入数据的大小。由于列式数据在物理上是相邻的,有大量重复数据,因此通用压缩方案对列式数据的压缩效果也很好。

列式文件格式在处理大型数据集并需要过滤或投影数据时表现出色,这正是OLAP类型用例和MapReduce中常见的工作类型。但Hadoop中使用的大多数数据格式(如JSON和Avro)都是行序的,这意味着在读写这些文件时无法应用上述优化。

例如,对于Hive表中的数据,执行查询 SELECT AVG(price) FROM stocks; 时,如果数据采用行式存储格式,即使只对 price 列进行操作,也需要读取每一行;而在列式存储中,只需读取 price

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值