原来 Kylin 的增量构建,大有学问! | 原力计划
摘要:增量构建 Cube 的定义必须包含一个时间维度,用来分割不同的 Segment,这样的维度称为分割时间列(Partition Date Column)。增量构建的 Cube 需要指定分割时间列。
查询引擎只需向存储引擎访问单个 Segment 所对应的数据,无需进行 Segment 之间的聚合;
为了加强性能,单个 Segment 的数据也有可能被分片存储到引擎的多个分区上,查询引擎可能仍然需要对单个 Segment 不同分区的数据做进一步的聚合。
由于不同时间的数据分布在不同的 Segment 之中,查询引擎需要向存储引擎请求读取各个 Segment 的数据;
增量构建的 Cube 上的查询会比全量构建的做更多的运行时聚合,通常来说增量构建的 Cube 上的查询会比全量构建的 Cube 上的查询要慢一些。
在进行增量构建时,将增量部分的起始时间和结束时间作为增量构建请求的一部分提交给 Kylin 的任务引擎
任务引擎会根据起始时间和结束时间从 Hive 中抽取相应时间的数据,并对这部分数据做预计算处理
将预计算的结果封装成为一个新的 Segment ,并将相应的信息保存到元数据和存储引擎中。一般来说,增量部分的起始时间等于 Cube 中最后一个 Segment 的结束时间。
1个文件10G和10000个文件共10G 读取一个文件更快(寻址开销、频繁发开关闭)
一个文件夹内的文件特别多,这个文件夹打开的时间就会特别长。
当系统越来越慢,越来越慢,越来越慢,越来越慢,有可能是某一个目录中的数据没有及时的清空或删除。