THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!

Apache Kylin : Analytical Data Warehouse for Big Data

Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • 每一次构建任务会生成一份新的全局字典
  • 每次新的构建任务的字典按版本号进行保存, 旧的全局字典会被逐渐删除
  • 一份字典包括一份meta数据文件和多个字典文件, 每个字典文件称之为桶(Bucket)
  • 每个桶分为两个映射( Map<Object, Long>), 两者合并为完整的映射关系

Image RemovedImage Added

draw.io Diagram
bordertrue
diagramNameGlobalDictionary-In-Kylin4
simpleViewerfalse
width
linksauto
tbstyletop
lboxtrue
diagramWidth671
revision3

...

下图所示的是编号为1的桶多次构建任务中,桶内字典的传递,每一次构建都会为桶创建一个新的版本(即v1, v2, v3等),加入版本控制的原因后面会有解释。Curr(current)和Prev(Previous)是一个桶内的两个HashMap,分别存储着当前桶内字典的相对(Relative)编码值和之前已经构建的所有字典值的绝对(Absolute)编码值。


Image RemovedImage Added

构建步骤

  • 通过 Spark 创建平表并获取需精确去重列的 distinct 值
  • 根据确定去重后的字面值数量来确认分片数, 并且根据需求判断是否需要扩容
  • 将数据分配(repartition)到多个分片(Partition)中,分别进行编码, 存储到各自的字典文件中
  • 为当前构建任务分配版本号
  • 保存字典文件和 metadata数据(桶数量和桶的 offset 值)
  • 根据条件判断需要删除旧版本

...