Kylin学习

kylin流程是从 hive 等数据源中 拿取到数据,然后通过 Cube构建引擎 通过各种维度 构建成 Cube ,然后存储到 HBase中

OLAP 的一些基础概念

事实表和维度表

事实表(Fact Table)

事实表(Fact Table)是指存储有事实记录的表,如系统日志、销售记录等;

事实表的记录在不断地动态增长,所以它的体积通常远大于其他表。

维度表(Dimension Table)

维度表(Dimension Table)或维表,有时也称查找表(Lookup Table)

是与事实表相对应的一种表: 它保存了维度的属性值,可以跟事实表做关联;相当于将事实表上经常重复出现的属性抽取、规范出来用一张表进行管理。

常见的维度表有:日期表(存储与日期对应的周、月、季度等的属 性)、地点表(包含国家、省/州、城市等属性)等。

使用维度表有诸多好处,具体如下:

  • 缩小了事实表的大小
  • 便于维度的管理和维护,增加、删除和修改维度的属性,不必对事实表的大量记录进行改动
  • 维度表可以为多个事实表重用,以减少重复工作。

星型模型

数据挖掘有几种常见的多维数据模型,如星形模型(Star Schema)、雪花模型(Snowflake Schema) 等。

星型模型

星形模型中有一张事实表,以及零个或多个维度表;

事实表与维度表通过主键外键相关联,维度表与维度表之间没有关联,就像很多星星围绕在一个恒星周围,故取名为星形模型。

雪花模型

如果将星形模型中某些维度的表再做规范,抽取成更细的维度表,然后让维度表之间也进行关联,那么这种模型称为雪花模型。

不过,Kylin只支持星形模型的数据集,这是基于以下考虑:

  • 星形模型是最简单,也是最常用的模型。
  • 由于星形模型只有一张大表,因此它相比于其他模型更适合于大数据处理。
  • 其他模型可以通过一定的转换,变为星形模型。

维度的基数

维度的基数(Cardinality)指的是该维度在数据集中出现的不同值的个数;

例如“国家”是一个维度,如果有 200 个不同的值,那么此维度的基数就是 200。

通常一个维度的基数会从几十到几万个不等,个别维度如“用户ID”的基数会超过百万甚至千万。基数超过一百万的维度通常被称为超高基数维度(Ultra High Cardinality,UHC),需要引起设计者的注意。

Kylin的实际使用操作

kylin中的 model

kylin 中 model指定了表中的关联关系, 用 emp表(事实表) 去 join (维度表)
然后指定 join后 生成的表 去指定 维度 和 度量。