Apache Kylin : Analytical Data Warehouse for Big Data
Page History
...
Kylin引入了桶这一概念,可以理解为在处理数据的时候,将数据分到若干个桶(即多个分区)中进行并行处理。 第一次构建字典的时候会对每个桶内的值从1开始编码,在所有桶的编码完成之后再根据每个桶的offset值进行整体字典值的分配。在代码中两次编码是通过两个HashMap进行存储的,其中一个存储桶内相对的字典值,另一个存储所有桶之间绝对的字典值。// 请汝鹏补充描述关于转化的内容第一次构建字典的时候会对每个桶内的值从1开始编码,在所有桶的编码完成之后再根据每个桶的offset值进行整体字典值的分配。在代码中两次编码是通过两个HashMap进行存储的,其中一个存储桶内相对的字典值,另一个存储所有桶之间绝对的字典值。下图所示的是编号为1的桶多次构建任务中,桶内字典的传递,Curr(current)和Prev(Previous)是一个桶内的两个HashMap,分别存储着当前桶内字典的相对编码值和之前已经构建的所有字典值的绝对编码值。
构建步骤
- 通过 Spark 创建平表并获取需精确去重列的 distinct 值
- 根据确定去重后的字面值数量来确认分片数, 并且根据需求判断是否需要扩容
- 将数据分配(repartition)到多个分片(Partition)中,分别进行编码, 存储到各自的字典文件中
- 为当前构建任务分配版本号
- 保存字典文件和 metadata数据(桶数量和桶的 offset 值)
- 根据条件判断需要删除旧版本
...
Overview
Content Tools
ThemeBuilder
Apps