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.

...

  1. 为什么在一个BucketDIctionary需要使用两个Map?
    1. 构建过程开始需要对分配到各个桶内的字典从1开始做一个相对(Relative)编码,这一部分字典相对编码值会存储在一个HashMap中,在相对字典值编码完成后,会得到每个桶的offset值,也就是桶内字典的数量,然后根据这个字典值计算出每个桶(桶是有顺序的)内字典值相对于所有桶的offset值的绝对(Absolute)编码,字典的绝对编码也会用另一个HashMap进行存储。
  2. 会不会存在数据倾斜问题?
    1. 现在测试下来因为热点构建不出来的概率很小,一般倾斜十亿级别才会过不去,列很多的确可能会造成这个问题,不过编码的桶数是可以无限放大的除非单key热点,否则调整参数也是很轻松完成构建。

  3. 为什么全局字典的数量能够超过整型最大基数(21亿)的限制?

      ...

        1. 因为引入了全新的BitMap数据结构Roaring64BitMap,在全局字典编码完成之后,编码会被压缩成二进制存储在Roaring64BitMap对象中,BitMap实际上是通过Long而不再是Integer进行存储的。

      ...