Apache Kylin : Analytical Data Warehouse for Big Data
Page History
...
- 每一次构建任务会生成一份新的全局字典
- 每次新的构建任务的字典按版本号进行保存, 旧的全局字典会被逐渐删除
- 一份字典包括一份meta数据文件和多个字典文件, 每个字典文件称之为桶(Bucket)
- 每个桶分为两个映射( Map<Object, Long>), 两者合并为完整的映射关系
draw.io Diagram | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
...
下图所示的是编号为1的桶多次构建任务中,桶内字典的传递,每一次构建都会为桶创建一个新的版本(即v1, v2, v3等),加入版本控制的原因后面会有解释。Curr(current)和Prev(Previous)是一个桶内的两个HashMap,分别存储着当前桶内字典的相对(Relative)编码值和之前已经构建的所有字典值的绝对(Absolute)编码值。
构建步骤
- 通过 Spark 创建平表并获取需精确去重列的 distinct 值
- 根据确定去重后的字面值数量来确认分片数, 并且根据需求判断是否需要扩容
- 将数据分配(repartition)到多个分片(Partition)中,分别进行编码, 存储到各自的字典文件中
- 为当前构建任务分配版本号
- 保存字典文件和 metadata数据(桶数量和桶的 offset 值)
- 根据条件判断需要删除旧版本
...
Overview
Content Tools
ThemeBuilder
Apps