背景
学习一下常用的列存储格式。
概况
内容整理自[2]
块压缩 | 读性能 | 写性能 | 增加列 | 场景 | 备注 | |
---|---|---|---|---|---|---|
CSV | 不支持 | 很低 | 部分支持,只能加到末尾 | |||
JSON | 不支持 | 全面支持 | ||||
Sequence | 不支持 | 只能追加字段 | Hadoop 中间数据 | |||
RCFile (Record Columnar) | 支持 | 很好 | Hadoop 上第一个列存储 | |||
ORC (Optimized RC) | 比 RCFile 更好 | 更好 | 不支持 | Hortonworks/Hive | ||
Parquet | 很好 | 很好 | 比较慢 | 有限 | Cloudera/Impala | |
Avro | 很好? |
- 数据格式:text、RC、Parquet、ORC
- 相同大小的原始数据集,转换成相应的格式之后的文件大小:Text > RC > Parquet > ORC
具体数据
内容整理自[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 >> Avro, SequenceFile, RCFile ORC 较大领先压缩比最高
- 存储时间:ORC, Parquet > RCFile, SequenceFile, Avro 差别不大
- 查询时间:ORC > Parquet >> RCFile > SequenceFile > Avro 列存储都比较快,压缩比越高越快
综合结果
首选 ORC, 次选 Parquet
备注
我们内部测试的时候:
- ORC 的大小是 Parquet 的 1/2 ~ 1/3,没有达到[3]中的近 1/8 的效果。
- JSON 的大小约为 CSV 的 2.5 倍,这个是可以理解的,JSON 中 meta 信息是完整的。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于