ORC、Parquet 等列式存储的优点

南墨11个月前技术文章345

ORC 和Parquet 都是高性能的存储方式,这两种存储格式总会带来存储和性能上的提升

  • Parquet:

1. Parquet 支持嵌套的数据模型,类似于Protocol Buffers,每一个数据模型的schema 包含多个字段,每一个字段有三个属性:重复次数、数据类型和字段名。重复次数可以是以下三种:required(只出现1 次),repeated(出现0 次或多次),optional(出现0 次或1 次)。每一个字段的数据类型可以分成两种:group(复杂类型)和primitive(基本类型)。

2. Parquet 中没有Map、Array 这样的复杂数据结构,但是可以通过repeated和group 组合来实现的。

3. 由于Parquet 支持的数据模型比较松散,可能一条记录中存在比较深的嵌套关系,如果为每一条记录都维护一个类似的树状结可能会占用较大的存储空间,因此Dremel 论文中提出了一种高效的对于嵌套数据格式的压缩算法:Striping/Assembly 算法。通过Striping/Assembly 算法,parquet 可以使用较少的存储空间表示复杂的嵌套格式,并且通常Repetition level 和Definition level 都是较小的整数值,可以通过RLE 算法对其进行压缩,进一步降低存储空间。

4. Parquet 文件是以二进制方式存储的,是不可以直接读取和修改的,Parquet文件是自解析的,文件中包括该文件的数据和元数据。

  • ORC:

1. ORC 文件是自描述的,它的元数据使用Protocol Buffers 序列化,并且文件中的数据尽可能的压缩以降低存储空间的消耗。

2. 和Parquet 类似,ORC 文件也是以二进制方式存储的,所以是不可以直接读取,ORC 文件也是自解析的,它包含许多的元数据,这些元数据都是同构ProtoBuffer 进行序列化的。

3. ORC 会尽可能合并多个离散的区间尽可能的减少I/O 次数。

4. ORC 中使用了更加精确的索引信息,使得在读取数据时可以指定从任意一行开始读取,更细粒度的统计信息使得读取ORC 文件跳过整个row group,ORC默认会对任何一块数据和索引信息使用ZLIB 压缩,因此ORC 文件占用的存储空间也更小。

5. 在新版本的ORC 中也加入了对Bloom Filter 的支持,它可以进一步提升谓词下推的效率,在Hive 1.2.0 版本以后也加入了对此的支持。


相关文章

MySQL运维实战之备份和恢复(8.3)xtrabackup增量备份

xtrabackup支持增量备份。在做增量备份之前,需要先做一个全量备份。xtrabackup会基于innodb page的lsn号来判断是否需要备份一个page。如果page lsn大于上次备份的l...

HDP-Yarn开启CPU调度和隔离

HDP-Yarn开启CPU调度和隔离

进入到ambari主界面 点击yarn 点击config CPU Scheduling and Isolation 设置为enable修改高级配置点击ADVANCED搜索需要修改的配yarn.node...

hive 通过元数据导出所有表信息

select db.NAME as db_name,tb.TBL_NAME as table_name,case tb.TBL_TYPE when 'MANAGED_TABLE...

MySQL 8.0 新特性:Clone Plugin

MySQL 8.0 新特性:Clone Plugin

一、前言MySQL 在 8.0.17 加入了克隆插件,可以从本地或者远程克隆数据,比如需要创建主从关系,我们一般都是通过物理备份来做,那如果你使用的是 MySQL 8.0.17 及以上的版本那么就可以...

Ansible自动化运维平台部署

一、部署前准备部署机器准备计算机名解析关闭防火墙、selinux时间同步软件包获得ssh免密登陆约定事项:所有服务器全部采用静态ip主机名称IP地址manage01192.168.98.200/24n...

Hive压测之开源Hive基准测试工具(hive-testbench-hive14)

Hive压测之开源Hive基准测试工具(hive-testbench-hive14)

此文章禁止转载概述Hive基准测试工具工具,可用来造数测试Hive基本性能。TPC-DS:提供一个公平和诚实的业务和数据模型,99个案例TPC-H:面向商品零售业的决策支持系统测试基准,定义了8张表,...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。