(90%)大数据文件格式梳理:Parquet、Avro、OR
2022-08-10 10:21:48 7 举报
AI智能生成
(90%)大数据文件格式梳理:Parquet、Avro、ORC 如何选择大数据文件格式 行式存储 列式存储
作者其他创作
大纲/内容
如何选择不同的数据格式
考虑因素:
读写速度
按行读多还是按列读多
是否支持文件分割
压缩率
是否支持schema evolution
不同数据格式最佳实践
读取少数列可以选择面向列存储的ORC或者Parquet
如果需要读取的列比较多,选择AVRO更优
如果schema 变更频繁最佳选择avro
实际上随着版本不断更新,现在parquet和orc都在一定程度上支持schema evolution,比如在最后面加列
ORC的查询性能优于Parquet
总结
扫描优化的列存储格式,默认是parquet
写优化的行格式,默认是avro
Parquet、Avro、ORC格式
不同数据格式特点
行式存储
1). AVRO:
主要为行存储
设计的主要目标是为了满足schema evolution(模式演化)
schema和数据保存在一起
列式存储
2). ORC:
面向列的存储格式
由Hadoop中RC files 发展而来,比RC file更大的压缩比,和更快的查询速度
Schema 存储在footer中
不支持schema evolution
支持事务(ACID)
为hive而生,在许多non-hive MapReduce的大数据组件中不支持使用
高度压缩比并包含索引
3). Parquet:
与ORC类似,基于Google dremel
Schema 存储在footer
列式存储
高度压缩比并包含索引
相比ORC的局限性,parquet支持的大数据组件范围更广
总结
相同点
基于Hadoop文件系统优化出的存储结构
提供高效的压缩
二进制存储格式
文件可分割,具有很强的伸缩性和并行处理能力
使用schema进行自我描述
属于线上格式,可以在Hadoop节点之间传递数据
不同点
行式存储or列式存储:
行式存储
而Avro以基于行的格式存储数据。
列式存储
Parquet和ORC都以列的形式存储数据,
压缩率:
基于列的存储区Parquet和ORC提供的压缩率高于基于行的Avro格式。
可兼容的平台:
行式存储
Avro常用于Kafka、Druid。
列式存储
ORC常用于Hive、Presto;
Parquet常用于Impala、Drill、Spark、Arrow;
不同的案例和应用场景选择合适的存储格式,可以提升存储和读取的效率。
总结
schema evolution support . 模式演化支持
Compression : 压缩率
splitability : 文件分割能力
most compatible platforms: 最兼容的平台
Row or Column : 行或列
Read or write : 读或写
Compression : 压缩率
splitability : 文件分割能力
most compatible platforms: 最兼容的平台
Row or Column : 行或列
Read or write : 读或写
收藏
0 条评论
下一页