ORCFILE,ParquetFile,CubeFile使用场景区别

时间:2022-07-07 17:07:25

这个其实是转自杭州第三次spark meetingup,华为的李昆大神的分享。

OLAP分析场景 ORC File Parquet File Cube File
Full scan one dimension Fast  Fast Median
(Low Cardinality) (只扫需要的列) (只扫需要的列) (只扫需要的列,但MDK较大)
Full scan one dimension Slow Slow Fast
(High Cardinality) (Stripe Level字典编码,需要重复解码) (Row Group Level字典编码,需要重复解码) (全局字典编码,无重复解码)
Full scan multiple dimension aggregation Slow Slow Fast
(读取多行并做join) (读取多行并做join) (星型模型转换后无需join)
Filter single dimension Slow Very Slow Fast
(需要全扫描单列,可利用min/max跳过Stripe) (需要全扫描单列,无索引) (利用多维索引)
Filter multiple dimensions Slow Very Slow Very Fast
Select Year,ServiceName,  (需要全扫描多列,可利用min/max跳过Stripe) (需要全扫描多列,无索引) (利用多维索引)
Filter on Measure Slow Slow Slow
(需要全扫描,可利用min/max跳过Stripe) (需要全扫描,无索引) (度量上无索引,需要全扫描)

排版有些乱,大家凑合看一下。

从这个比较来看,大基数的全量多维的查询,CubeFile的优势是很明显的。

个人感觉,最大原因是ORCFile和ParquetFile他们是分块索引数据的,而CubeFile是全量索引数据的。现在理解的还比较浅,等深入理解后再来论这个的区别和关系。