Kylin查询性能优化之使用rowkeys排序列快速读取parquet文件、使用shardby列来裁剪parquet文件

1. 使用rowkeys排序列快速读取parquet文件

在进行cube的定义时,默认会有一个rowkeys排序列。这样cube构建时,每个cuboid的维度字段都会根据rowkeys排序列,进行数据的排序保存。这样在数据查询的时候就能很快的检索到数据了

在Cube Designer的Advanced Setting的Rowkeys部分,可以在ID区域拖拽进行rowkeys顺序的自定义,如下所示:

rowkeys

2. 使用shardby列来裁剪parquet文件

默认一个cube的一个segment的一个cuboid里面,会有多个parquet文件。如下所示:

多个parquet文件如果将一个列定义为shardBy列,则shardBy列不同的值会形成不同的parquet文件,这样查询的时候对shardBy列做条件过滤,就能直接跳过不必要的文件扫描

建议选择高基列(数据基本不重复或者均为唯一值的列),并且会在多个cuboid中
出现的列作为shardBy列

目前在SQL查询中只支持以下过滤操作来裁剪parquet文件:Equality、
In、InSet、IsNull

2.1 shardBy列的使用

先将cube进行Disable,再进行Purge(会删除cube的元数据,但是HDFS上的数据不会删除)

最后进行Edit,在Cube Designer的Advanced Setting的Rowkeys部分,可以定义某些维度为shardBy列,如下所示:

shardBy列再次进行cube的构建即可

猜你喜欢

转载自blog.csdn.net/yy8623977/article/details/126055982
今日推荐