CSDN原来 Kylin 的增量构建,大有学问! | 原力计划
本文插图
作者| Alice菌责编 | 王晓曼出品 | CSDN博客Kylin增量构建应用场景 Kylin 在每次 Cube 的构建都会从 Hive 中批量读取数据 , 而对于大多数业务场景来说 , Hive 中的数据处于不断增长的状态 。 为了支持 Cube 中的数据能够不断地得到更新 , 且无需重复地为已经处理过的历史数据构建 Cube , 因此对于 Cube 引入了增量构建的功能 。 1、理解 Cube、Cuboid 与 Segment 的关系Kylin 将 Cube 划分为多个 Segment(对应就是 HBase 中的一个表) , 每个Segment 用起始时间和结束时间来标志 。 Segment 代表一段时间内源数据的预计算结果 。 一个 Segment 的起始时间等于它之前那个 Segment 的结束时间 , 同理 , 它的结束时间等于它后面那个 Segment 的起始时间 。 同一个 Cube 下不同的 Segment 除了背后的源数据不同之外 , 其他如结构定义、构建过程、优化方法、存储方式等都完全相同 。
本文插图
一个 Cube , 可以包含多个 Cuboid , 而 Segment 是指定时间范围的 Cube , 可以理解为 Cube 的分区 。 对应就是 HBase 中的一张表 , 该表中包含了所有的 Cuboid。 例如:以下为针对某个Cube的Segment 。
本文插图
2、全量构建与增量构建 全量构建在全量构建中 , Cube 中只存在唯一的一个 Segment, 该 Segment 没有分割时间的概念 , 也就没有起始时间和结束时间 。 全量构建和增量构建各有其适用的场景 , 用户可以根据自己的业务场景灵活地进行切换 。 对于全量构建来说 , 每当需要更新Cube数据的时候 , 它不会区分历史数据和新加入的数据 , 也就是说 , 在构建的时候会导入并处理所有的原始数据 。
本文插图
增量构建增量构建只会导入新 Segment 指定的时间区间内的原始数据 , 并只对这部分原始数据进行预计算 。
本文插图
全量构建与增量构建的Cube查询方式对比:(1)全量构建Cube
- 查询引擎只需向存储引擎访问单个 Segment 所对应的数据 , 无需进行 Segment 之间的聚合;
- 为了加强性能 , 单个 Segment 的数据也有可能被分片存储到引擎的多个分区上 , 查询引擎可能仍然需要对单个 Segment 不同分区的数据做进一步的聚合 。
- 由于不同时间的数据分布在不同的 Segment 之中 , 查询引擎需要向存储引擎请求读取各个 Segment 的数据;
- 增量构建的 Cube 上的查询会比全量构建的做更多的运行时聚合 , 通常来说增量构建的 Cube 上的查询会比全量构建的 Cube 上的查询要慢一些 。
本文插图
增量构建 Cube 过程 1、指定分割时间列增量构建 Cube 的定义必须包含一个时间维度 , 用来分割不同的 Segment , 这样的维度称为分割时间列(Partition Date Column) 。 2、增量构建过程
推荐阅读
- 小畜播报|于小彤陈小纭疑似分手?删除动态,原来早有预兆!
- 小逗搞笑|这姑娘原来是打算跳水的
- 再看清你本来的面目,说你原来是这样的人,我对你的感觉大概就是
- 三星手机|为什么三星手机,在我国越来越没市场了?原来这是必然结果
- 『恒星』北极星原来是个“三体”,3颗星都比太阳大,最大的能装5万多太阳
- 游戏圈那点事|元气骑士巨弓巨斧视觉惊人!原来凉屋爱玩这一类 它还很实用
- LOL|凭什么The shy以魔封神?直播细节揭秘英雄心得,原来你也可以!
- 海南农家水井出现大量桃花水母是怎么回事?什么情况?终于真相了,原来是这样!
- 银行被骗9300万|银行被骗9300万是怎么回事?什么情况?终于真相了,原来是这样!
- 张翰|张翰工作室否认与郑爽复合是怎么回事?什么情况?终于真相了,原来是这样!
