CC00008.kylin——|Hadoop&OLAP_Kylin.V08|——|Kylin.v08|Kylin构建Cube|增量构建Cube.V1|

本文介绍了Hive Cube的增量构建,旨在提高数据处理效率。增量构建允许仅处理新数据,避免重复计算历史数据。Cube被划分为Segment,每个Segment对应特定时间范围,便于管理和查询。全量构建适用于小数据量或需全表更新的情况,而增量构建适合大数据量Cube,通过合并不同Segment进行查询,虽查询速度稍慢但节省资源。增量构建涉及设置分割时间列,确保数据按时间有序分布。
摘要由CSDN通过智能技术生成
一、增量构建Cube
### --- 增量构建cube

~~~     在大多数业务场景下,Hive中的数据处于不断增长的状态
~~~     为了支持在构建Cube时,无需重复处理历史数据,引入增量构建功能
二、Segment
### --- Kylin将Cube划分为多个Segment(对应就是HBase中的一个表)

~~~     一个Cube可能由1个或多个 Segment 组成。
~~~     Segment是指定时间范围的Cube,可以理解为Cube的分区
~~~     Segment 是针对源数据中的某一个片段计算出来的 Cube 数据,代表一段时间内源数据的预计算结果
~~~     每个Segment用起始时间和结束时间来标志
~~~     一个 Segment 的起始时间等于它之前 Segment 的结束时间;
~~~     它的结束时间等于它后面那个Segment的起始时间
~~~     同一个 Cube 下不同的 Segment 除了背后的源数据不同之外,
~~~     其他如结构定义、构建过程、优化方法、存储方式等都完全相同
三、segment流程结构
四、segment示意图
五、例如:以下为针对某个Cube的Segment
segment名称分区时间HBase表名
202110110000000-20211012000000020211011KYLIN_41Z8123
202110120000000-20211013000000020211012KYLIN_5AB2141
202110130000000-20211014000000020211013KYLIN_7C1151
202110140000000-20211015000000020211014KYLIN_811680
202110150000000-20211016000000020211015KYLIN_A11AD1
六、全量构建与增量构建
### --- 全量构建:在全量构建中:

~~~     Cube中只存在唯一的一个Segment
~~~     该Segment没有分割时间的概念,即没有起始时间和结束时间
~~~     对于全量构建来说,每当需要更新Cube数据时,它不会区分历史数据和新加入的数据,
~~~     即在构建时会导入并处理所有的数据
### --- 增量构建:在增量构建中:

~~~     只会导入新 Segment 指定的时间区间内的原始数据,
~~~     并只对这部分原始数据进行预计算全量构建和增量构建的对比
全量构建增量构建
每次更新时都需要更新整个数据集每次只对需要更新的时间范围进行更新,计算量相对较小
查询时不需要合并不同Segment的结果查询时需要合并不同Segment的结果,
因此查询性能会受影响
不需要后续的Segment合并累计一定量的Segment之后,需要进行合并
适合小数据量或全表更新的Cube适合大数据量的Cube
### --- 全量构建与增量构建的Cube查询方式对比:

~~~     # 全量构建Cube
~~~     查询引擎只需向存储引擎访问单个Segment所对应的数据,无需进行Segment之间的聚合
~~~     为了加强性能,单个Segment的数据也有可能被分片存储到引擎的多个分区上,
~~~     查询引擎可能仍然需要对单个Segment不同分区的数据做进一步的聚合
~~~     # 增量构建Cube

~~~     由于不同时间的数据分布在不同的Segment之中,
~~~     查询引擎需要向存储引擎请求读取各个Segment的数据
~~~     增量构建的Cube上的查询会比全量构建的做更多的运行时聚合,
~~~     通常来说增量构建的Cube上的查询会比全量构建的Cube上的查询要慢一些
~~~     对于小数据量的Cube,或者经常需要全表更新的Cube,
~~~     使用全量构建需要更少的运维精力,以少量的重复计算降低生产环境中的维护复杂度。
~~~     对应大数据量的Cube,例一个包含较长历史数据的Cube,
~~~     如果每天更新,那么大量的资源是在用于重复计算,这种情况下可以考虑使用增量构建。
七、增量构建Cube过程
### --- 指定分割时间列

~~~     增量构建Cube的定义必须包含一个时间维度,
~~~     用来分割不同的Segment,这样的维度称为分割时间列(Partition Date Column)。
### --- 增量构建过程

~~~     在进行增量构建时,
~~~     将增量部分的起始时间和结束时间作为增量构建请求的一部分提交给Kylin的任务引擎
~~~     任务引擎会根据起始时间和结束时间从Hive中抽取相应时间的数据,并对这部分数据做预计算处理
~~~     将预计算的结果封装成为一个新的Segment,并将相应的信息保存到元数据和存储引擎中。
~~~     一般来说,增量部分的起始时间等于Cube中最后一个Segment的结束时间
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yanqi_vip

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值