-
-
- 创建立方体(Cube)
-
参考文档:
播客:http://tech.meiyou.com/?p=97
官网创建cube: http://kylin.apache.org/cn/docs15/tutorial/create_cube.html
Cube执行原理:
1、创建Cube:
2、编译Cube(Build Cube):
定义好Cube之后,Apache Kylin通过MapReduce,将存储在Hive中的事实表和维度表,转换成Cube,存储在HBase中,以实现快速分析查询,整个过程如下图所示:
STEP1. 根据Cube定义的事实表和维度,在Hive中生成一张中间表;
Create Intermediate Flat Hive Table;
STEP2. 使用MapReduce,从事实表中抽取维度的Distinct值,并以字典树的方式压缩编码,同时也对所有维度表进行压缩编码,生成维度字典;
Extract Fact Table Distinct Columns
Build Dimension Dictionary
STEP3. 计算和统计所有的维度组合,并保存,其中,每一种维度组合,称为一个Cuboid,后面会详细介绍。
Save Cuboid Statistics
STEP4. 创建HBase Table;
Create HTable
STEP5. 利用step1中间表的数据,使用MapReduce,生成每一种维度组合(Cuboid)的数据;
Build Base Cuboid Data;
Build N-Dimension Cuboid Data : 7-Dimension;
Build N-Dimension Cuboid Data : 6-Dimension;
。。。。。。
Build N-Dimension Cuboid Data : 2-Dimension;
Build Cube;
STEP6. 将Cuboid数据转换成HFile,并导入到HBase Table中:
Convert Cuboid Data to HFile;
Load HFile to HBase Table;
STEP7. 更新Cube信息,清理中间表:
Update Cube Info;
Garbage Collection;
整个Build过程结束。
创建cube
选择models->点击new下拉框-》选择new cube.
选择创建好的model,并填入cube name。notification email list是选填项,表示报警接收人邮件地址,多个邮件地址以逗号隔开。
然后next。选择dimession,有两种方式:一是手动添加dimession,二是使用自动生成,我们这里使用自动生成,然后勾选需要的字段。
选择纬度后如下。
然后next,选择指标
count是系统默认自带的,不要删除。
需要注意的是kylin中hive表中每一列字段的类型要求比较严格。dimession字段需要为String,用来加和的指标字段须为bigint或者decimal,添加了所有需要的指标后,点击next
设置merge时间。Kylin每次build会生成一张hbase表,merge操作会把多天数据合并成一张新的hbase表。可加快查询。
设置partition Start Date,即数据源开始时间,默认为1970-01-01.点击Next.
Includes:查询包含列字段。
Mandatory Dimensions:每次查询均会使用的维度可添加在此。比如某些情况下的partition column.
Hierarchy Dimensions:维度列中彼此间存在层级关系的列,比如“国家-省份-市-县”
Joint Dimensions:每次查询会同时使用或不使用的维度组合。
Aggregation Group:在不同的查询中,两组维度组合之间不会产生交叉,可选择此选项,比如所有的cube维度有 [ a,b,c,d,e,f ] 6个,每次查询中只会同时查与 [ a,b,c ] 相关的信息(比如[a],[a,c]等)而不会查询 [ d,e,f ],或者相反,则可选择此选项。
以上选择均可减少build过程中的数据量,是加快build与query速度的优化点之一。
接下来基本上就是next,如下图
然后保存,创建成功后如下: