"背景 学习一下常用的列存储格式。 概况 内容整理自 [2] 块压缩 读性能 写性能 增加列 场景 备注 CSV 不支持 很低 部分支持,只能加到末尾 JSON 不支持 全面支持 Sequence 不支持 只能追加字段 Hadoop 中间数据 RCFile (Record Columnar) 支持 很好 Hadoop 上 .."

列存储格式学习

本贴最后更新于 340 天前,其中的信息可能已经时移俗易

背景

学习一下常用的列存储格式。

概况

内容整理自 [2]

块压缩 读性能 写性能 增加列 场景 备注
CSV 不支持 很低 部分支持,只能加到末尾
JSON 不支持 全面支持
Sequence 不支持 只能追加字段 Hadoop 中间数据
RCFile (Record Columnar) 支持 很好 Hadoop 上第一个列存储
ORC (Optimized RC) 比 RCFile 更好 更好 不支持 Hortonworks/Hive
Parquet 很好 很好 比较慢 有限 Cloudera/Impala
Avro 很好?

具体数据

内容整理自 [3],进行了归一化处理,以 RCFile 为基准。

存储格式 压缩比 存储时间 查询时间
RCFile 100% 100% 100%
ORC 2.8% 98.6% 22.2%
SequenceFile 105% 115.1% 208.0%
Parquet 17.24% 98.9% 27.4%
Avro 104.5% 100.2% 318.2%

初步结果

综合结果

首选 ORC, 次选 Parquet

备注

我们内部测试的时候:

  1. ORC 的大小是 Parquet 的 1/2 ~ 1/3,没有达到 [3] 中的近 1/8 的效果。
  2. JSON 的大小约为 CSV 的 2.5 倍,这个是可以理解的,JSON 中 meta 信息是完整的。

来源

  1. Data Lake Analytics > 最佳实践 > CSV 文件格式
  2. text、RC、Parquet、ORC
  3. Hive 的几种常见压缩格式(ORC,Parquet,Sequencefile,RCfile,Avro)的读写查询性能测试

  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:PipeSoloSymWide 等,欢迎大家加入,贡献开源。

    2265 引用 • 3707 回帖 • 620 关注
  • warehouse
    2 引用
  • orc
    1 引用
感谢    关注    收藏    赞同    反对    举报    分享
回帖    
请输入回帖内容...