原文地址:http://lxw1234.com/archives/2016/05/655.htm
Cube是一种典型的多维数据分析技术,一个Cube可以有多个事实表,多个维表构成。如果您还不了解这些概念,建议您搜索下数据仓库、OLAP、Cube、星型模型、事实表、维度表等等。比如一个简单例子,分析网站流量的Cube,包含一个事实表和四个维度表:
事实表可能有以下字段:
天、来源ID、浏览器ID、操作系统ID、PV、PageNumber等等;
其中,小时、来源ID、浏览器ID、操作系统ID 为维度;
PV、PageNumber为指标;
一般事实表中的维度都采用外键ID的形式,一来可以节省存储,也可以很好的适用于其他分析工具;
维度表包括:
时间维表:年、月、日,其中天为最细粒度,也为该表主键;
访问来源维表:来源ID、来源名称;
浏览器维表:浏览器ID、浏览器名称、etc.
操作系统维表:操作系统ID、操作系统名称、etc.
事实表中的维度,分别与这四张维度表,通过主外键的方式关联。
Kylin中的Cube亦是这种模型。

创建Cube

之前的文章《分布式大数据多维分析(OLAP)引擎Apache Kylin安装配置及使用示例》介绍过在Kylin中定义数据模型和Cube。

Build Cube

定义好Cube之后,Apache Kylin通过MapReduce,将存储在Hive中的事实表和维度表,转换成Cube,存储在HBase中,以实现快速分析查询,整个过程如下图所示:

kylin

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过程结束。

关于维度组合Cuboid

Kylin中Cube的Build过程,其实是将所有的维度组合事先计算,存储于HBase中,以空间换时间,HTable对应的RowKey,就是各种维度组合,指标存在Column中,这样,将不同维度组合查询SQL,转换成基于RowKey的范围扫描,然后对指标进行汇总计算。

理论上来说,一个N维的Cube,便有2的N次方种维度组合,参考网上的一个例子,一个Cube包含time, item, location, supplier四个维度,那么组合(Cuboid)便有16种:

kylin

一个Cube中,当维度数量N超过一定数量后,空间以及计算消耗将会非常大,Kylin在定义Cube时候,可以将维度拆分成多个聚合组(Aggregation Groups),只在组内计算Cube,聚合组内查询效率高,跨组查询效率较差,所以需要根据业务场景,将常用的维度组合定义到一个聚合组中,提高查询性能,这也是Kylin中查询性能优化的一个重要方面。

后续将继续学习Kylin的原理及优化。

Apache Kylin原理学习之Cube的创建与Build相关推荐

  1. Kylin 安装以及spark cube 的创建

    一. 准备  下载kylin安装包  http://www.apache.org/dyn/closer.cgi/kylin/apache-kylin-2.2.0/apache-kylin-2.2.0- ...

  2. 【读书笔记】数据仓库- Apache Kylin权威指南

    Apache Kylin权威指南(第2版) ◆ 1.2.1 为什么要使用Apache Kylin 它们的主要技术是"大规模并行处理"(Massively Parallel Proc ...

  3. Apache Kylin新手入门指南

    Apache Kylin新手入门指南 文章目录 Apache Kylin新手入门指南 1 Apache Kylin是什么 2 为什么使用Apache Kylin 3 Apache Kylin的易用性如 ...

  4. Apache Kylin在绿城客户画像系统中的实践

    前言 \\ 作为国内知名的房地产开发商,绿城经过24年的发展,已为全国25万户.80万人营造了美丽家园,并将以"理想生活综合服务提供商"为目标,持续为客户营造高品质的房产品和生活服 ...

  5. 7.Apache Kylin 创建cube 第一阶段报错Create Intermediate Flat Hive 报错 MapredLocalTask

    文章目录 一.问题 二.解决 一.问题 版本: cdh6.2.0 kylin3.0.0 构建cube第一阶段Create Intermediate Flat Hive,报错 FAILED: Execu ...

  6. Apache Kylin Cube 的构建过程

    不多说,直接上干货! 1. Cube的物理模型 Cube物理模型 如上图所示,一个常用的3维立方体,包含:时间.地点.产品.假如data cell 中存放的是产量,则我们可以根据时间.地点.产品来确定 ...

  7. Apache Kylin权威指南1.3 Apache Kylin的工作原理

    1.3 Apache Kylin的工作原理 Apache Kylin的工作原理本质上是MOLAP(Multidimensional Online Analytical Processing)Cube, ...

  8. 深入 Apache Kylin Cube 与查询优化

    2019独角兽企业重金招聘Python工程师标准>>> 近几年,Apache Kylin作为一个高速的开源分布式大数据查询引擎正在迅速崛起.它充分发挥Hadoop.Spark.HBa ...

  9. 由浅入深学习Apache httpd原理与配置

    由浅入深学习Apache httpd原理与配置 原贴:http://jackcui.blog.51cto.com/11877206/1858989 文章防盗链地址:http://jackcui.blo ...

最新文章

  1. 让你用 Chrome 上网快到想哭:Vimium
  2. css-模态对话框的制作
  3. Java多线程学习笔记-线程的使用
  4. RocketMQ源码解析-Producer消息发送
  5. 多容器,Nginx容器灵活切换PHP版本!同时运行多个PHP容器
  6. hssfworkbook 单元格合并后宽度不生效_一起来学习Excel批量合并单元格的操作技巧...
  7. 亚洲新首富出炉!富豪榜单大洗牌,马云3年来首次跌出中国前三
  8. 每日算法系列【LeetCode 992】K个不同整数的子数组
  9. QTP自动化测试—用户登录
  10. Mysql数据库更新操作导致死锁问题
  11. winform实现下拉框检索
  12. 【PC工具】更新电脑考证题库,消防考试题库,司法考试,大学英语四六级题库,教师资格考试题库等...
  13. 解决IDM下载城通网盘,一个网站不允许请求同一个文件两次,即使设置了快捷键也无用的问题
  14. SpringBoot+JWT+SpringSecurity对api进行授权保护
  15. HTML中span标签使用详解含多种实例(转)
  16. 反病毒引擎设计(一):绪论 本文来自:剑盟反病毒技术门户(www.janmeng.com)
  17. 金丹期前期:1.2、python语言-python的基本元素:变量及命名规则、数据类型及转换、运算符、输入输出
  18. install pecl php_php – pecl install pecl_http没有提供任何版本
  19. switch之enum
  20. 《快速上手ARM体系结构》网易公开课

热门文章

  1. c语言成绩管理系统开题报告,学生信息管理系统,开题报告(共篇).doc
  2. binary search(二分法)
  3. 群晖服务器性能测试,对群晖DS716+进行性能测试_群晖 DS716+_企业存储技术与评测-中关村在线...
  4. Java 遍历HashTable
  5. Java 删除集合中指定的元素
  6. Python MySQL创建表
  7. pycharm和pythonIDE安装详解
  8. .net core orm框架_轻量级高性能PHP框架ycroute
  9. oracle 拉文件进ubuntu,ubuntu 18-20 安装oracle java 打开jnlp文件
  10. pxc mysql mycat_Mycat+Pxc的配置