Apache Parquet 与Apache ORC简介

1.列存储的优势
传统的 RDBMS 大多使用的行存储方式,现如今随着大数据技术的发展,对于存储的要求越来越高,列存储相对有自己明显的优势:列数据相对来说比较类似,压缩比更高;一般的查询只涉及几列,列存储的查询性能也更高;可以方便地新增列等。在某些场景下,选择列存储是非常不错的选择,从节省存储的角度来说就非常吸引人了。

目前,比较有名的开源实现有 Apache Parquet 和 Apache ORC。ORC 官网介绍 Facebook 和 Yahoo 都使用了 ORC。

2.Parquet
pache Parquet 是 Apache 的顶级项目,是一个自描述语言无关的列存储,最初的设计动机是为了存储嵌套数据,可以将 ProtoBuf、Thrift、Avro 等格式的数据转换为列格式来存储,这是其最大的优势。此外,也有基本的功能,数据压缩、基本的索引功能、支持复杂类型等。主要在 Apache Drill 中使用。

从 Hive 0.13 开始,Hive 开始原生支持 Parquet,注意不是全部类型都支持,详情请参考 Hive 官方文档。使用方法很简单,只需要在建表语句的时候,声明存储格式即可。

-- 建表,通过修改 parquet.compression 参数来修改压缩算法
CREATE TABLE parquet_test (
 id int,
 str string,
 mp MAP<STRING,STRING>,
 lst ARRAY<STRING>,
 strct STRUCT<A:STRING,B:STRING>)
PARTITIONED BY (part string)
STORED AS PARQUET TBLPROPERTIES ("parquet.compression"="SNAPPY");

-- 数据迁移只需要将原来的表数据重新插入一遍即可
INSERT OVERWRITE TABLE parquet_test SELECT * FROM old_test;
 
数据存储格式图 

è¿éåå¾çæè¿°
3.ORC
ORC(OptimizedRC File)也是 Apache 的顶级项目,也是自描述的列存储,源自于RC(RecordColumnar File),主要是在 Hive 中使用,支持数据压缩、索引功能、update 操作、ACID 操作、支持复杂类型等,其查询性能相对 Parquet 略有优势。

从 Hive 0.11 版本开始引入,使用方法也很简单。

CREATE TABLE ORC_test (
  ...
) STORED AS ORC TBLPROPERTIES ("orc.compress"="NONE");

-- merge small ORC files into a larger file, starting in hive 0.14
ALTER TABLE ORC_test PARTITION(...) CONCATENATE;
 
数据存储格式图 

 è¿éåå¾çæè¿°

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值