kylin的实现原理

摘自https://blog.bcmeng.com/post/kylin-cube.html#kylin%E7%9A%84%E9%A2%84%E8%AE%A1%E7%AE%97%E6%98%AF%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E7%9A%84

  1. kylin 预计算实现过程:将hive数据源的数据依据制定的计算逻辑将指定好的维度计算为指标,将所有可能的计算结果(cube)存储到HBase。(确定是所有吗?
  2. cube和cuboid,cube就是一个数据源的所有计算结果,cuboid就是每一种维度组合,并包含计算的指标,cube的计算过程是逐层计算的,首先计算Base cuboid,然后计算维度数依次减少,逐层向下计算每层的cuboid。
  3. cuboid转换为HBase的rowkey存储,
    •   cuboid的维度会映射为HBase的rowkey,其中维度会被kylin进行字典编码以节省存储资源,而其指标会映射为HBase的value。
    • 在计算cuboid过程中,会将Hive表的数据转化为HBase的KV形式。Rowkey的具体格式是cuboid id + 具体的维度值(最新的Rowkey中为了并发查询还加入了ShardKey,是最新的吗),cuboid为8位
    • 所有的cuboid计算完成后,会将cuboid转化为HBase的KeyValue格式生成HBase的HFile,最后将HFile load进cube对应的HBase表中。
  4. SQL查询怎样转成HBase的查询操作
    •   
      1 select year, sum(price)
      2 from table
      3 where city = "beijing"
      4 group by year

      这个SQL涉及维度yearcity,所以其对应的cuboid是00000011,又因为city的值是确定的beijing,所以在Scan HBase时就会Scan Rowkey以00000011开头且city的值是beijing的行,取到对应指标sum(price)的值,返回给用户。

猜你喜欢

转载自www.cnblogs.com/dretrtg/p/13170556.html