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、增量构建过程
推荐阅读
- CSDN|由 Apache 说开,中国开源项目已经走向世界!
- CSDN|软件对于英特尔意味着什么?
- GPD掌机|终于明白PS4不开机的原因了,原来中年人是这样玩游戏的
- CSDN|中国首家苹果零售店重开业,苹果CEO库克发文揭幕;“携号转网”服务用户破千万;GitHub 完成北极源代码存档|极客头条
- 中年|现实生活中的“卡通房子”,原来海绵宝宝的“菠萝屋”,真的存在!
- 智能机器人|快商通智能客服云平台荣获CSDN“AI优秀案例实践奖”
- CSDN|万亿美元软件浪潮来临,开发者是核心!
- 行业互联网|快商通智能客服云平台荣获CSDN“AI优秀案例实践奖”
- CSDN|OpenInfra Days China 2020 官网正式上线,含免费注册通道!
- 中年|吃葡萄干前到底用不用洗?很多人原来都吃错了,来看看专家怎么说