星型数据仓库olap工具kylin介绍

数据仓库是目前企业级BI分析的重要平台,尤其在互联网公司,每天都会产生数以百G的日志,如何从这些日志中发现数据的规律很重要. 数据仓库是数据分析的重要工具, 每个大公司都花费数百万每年的资金进行数据仓库的运维.

本文介绍一个基于hadoop的数据仓库, 它基于hadoop(HIVE, HBASE)水平扩展的特性, 客服传统olap受限于关系型数据库数据容量的问题. Kylin是ebay推出的olap星型数据仓库的开源实现.

首先请安装Kylin, 和它的运行环境(Hadoop, yarn, hive, hbase). 如果安装成功, 登陆(http://<KYLIN_HOST>:7070/), 用户名:ADMIN, 密码(KYLIN). 安装过程请参考(http://kylin.incubator.apache.org/download/,  注意下载编译后的二进制包, 免去很多编译烦恼).

在创建数据仓库前, 我们先聊一下, 什么是数据仓库.

从业务过程的角度考虑, 信息系统可以划分为两个主要类别, 一类用于支持业务过程的执行, 代表作品是mysql; 另一类用于支持业务过程的分析, 代表作品是hive, 还有就是今天的主角kylin.

首先, 数据仓库的设计

下图展示了一个简单的基于订单流程中事实和维度的星型模型.

这是一个典型的星型结构, 订单的事实表有3个度量值(messures)(订单数量, 订单金额, 和订单成本); 另外有4个度量维度(dimession), 分别是时间, 产品, 销售员, 客户. 这里时间以天为单位,  这里注意day_key必须是(YYYY-MM-DD)格式(这是kylin的规定).

其次, 根据数据仓库的设计创建hive表

1. 创建事实表并插入数据

DROP TABLE IF EXISTS DEFAULT.fact_order ;

create table DEFAULT.fact_order (
time_key string,
product_key string,
salesperson_key string,
custom_key string,
quantity_ordered bigint,
order_dollars bigint,
cost_dollars bigint )
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE;
load data local inpath 'fact_order.csv' overwrite into table DEFAULT.fact_order;

 

fact_order.csv

2015-05-01,pd001,sp001,ct001,100,101,51
2015-05-01,pd001,sp002,ct002,100,101,51
2015-05-01,pd001,sp003,ct002,100,101,51
2015-05-01,pd002,sp001,ct001,100,101,51
2015-05-01,pd003,sp001,ct001,100,101,51
2015-05-01,pd004,sp001,ct001,100,101,51
2015-05-02,pd001,sp001,ct001,100,101,51
2015-05-02,pd001,sp002,ct002,100,101,51
2015-05-02,pd001,sp003,ct002,100,101,51
2015-05-02,pd002,sp001,ct001,100,101,51
2015-05-02,pd003,sp001,ct001,100,101,51
2015-05-02,pd004,sp001,ct001,100,101,51

2. 创建天维度表day_dim

DROP TABLE IF EXISTS DEFAULT.dim_day ;

create table DEFAULT.dim_day (
day_key string,
full_day string,
month_name string,
quarter string,
year string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE; load data local inpath 'dim_day.csv' overwrite into table DEFAULT.dim_day;

dim_day.csv

2015-05-01,2015-05-01,201505,2015q2,2015
2015-05-02,2015-05-02,201505,2015q2,2015
2015-05-03,2015-05-03,201505,2015q2,2015
2015-05-04,2015-05-04,201505,2015q2,2015
2015-05-05,2015-05-05,201505,2015q2,2015

3. 创建售卖员的维度表salesperson_dim

DROP TABLE IF EXISTS DEFAULT.dim_salesperson ;

create table DEFAULT.dim_salesperson (
salesperson_key string,
salesperson string,
salesperson_id string,
region string,
region_code string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE; load data local inpath 'dim_salesperson.csv' overwrite into table DEFAULT.dim_salesperson;

dim_salesperson.csv

sp001,hongbin,sp001,beijing,10086
sp002,hongming,sp002,beijing,10086
sp003,hongmei,sp003,beijing,10086

4. 创建客户维度 custom_dim

DROP TABLE IF EXISTS DEFAULT.dim_custom ;

create table DEFAULT.dim_custom (
custom_key string,
custom_name string,
custorm_id string,
headquarter_states string,
billing_address string,
billing_city string,
billing_state string,
industry_name string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE; load data local inpath 'dim_custom.csv' overwrite into table DEFAULT.dim_custom;

  

dim_custom.csv

ct001,custom_john,ct001,beijing,zgx-beijing,beijing,beijing,internet
ct002,custom_herry,ct002,henan,shlinjie,shangdang,henan,internet

5. 创建产品维度表并插入数据

DROP TABLE IF EXISTS DEFAULT.dim_product ;                                               

create table DEFAULT.dim_product (
product_key string,
product_name string,
product_id string,
product_desc string,
sku string,
brand string,
brand_code string,
brand_manager string,
category string,
category_code string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE; load data local inpath 'dim_product.csv' overwrite into table DEFAULT.dim_product;

dim_product.csv

pd001,Box-Large,pd001,Box-Large-des,large1.0,brand001,brandcode001,brandmanager001,Packing,cate001
pd002,Box-Medium,pd001,Box-Medium-des,medium1.0,brand001,brandcode001,brandmanager001,Packing,cate001
pd003,Box-small,pd001,Box-small-des,small1.0,brand001,brandcode001,brandmanager001,Packing,cate001
pd004,Evelope,pd001,Evelope_des,large3.0,brand001,brandcode001,brandmanager001,Pens,cate002

这样一个星型的结构表在hive中创建完毕, 实际上一个离线的数据仓库已经完成, 它包含一个主题, 即商品订单.

关于商品订单的统计需求可以使用hive命令产生. 比如:

1. 统计20150501到20150502所有的订单数.

Hive> select dday.full_day, sum(quantity_ordered) from fact_order as fact inner join dim_day  as dday on fact.time_key == dday.day_key and dday.full_day >= "2015-05-01" and dday.full_day <= "2015-05-02" group by dday.full_day order by dday.full_day;

2015-05-01      600

2015-05-02      600

2. 统计20150501到20150502各个销售员的销售订单数

select dday.full_day, dsp.salesperson_key, sum(quantity_ordered) from fact_order as fact

inner join dim_day  as dday on fact.time_key == dday.day_key

inner join dim_salesperson as dsp on fact.salesperson_key == dsp.salesperson_key

where dday.full_day >= "2015-05-01" and dday.full_day <= "2015-05-02"

group by dday.full_day, dsp.salesperson_key

order by dday.full_day;

2015-05-01      sp003   100

2015-05-01      sp002   100

2015-05-01      sp001   400

2015-05-02      sp003   100

2015-05-02      sp002   100

2015-05-02      sp001   400

然后,导入kylin数据仓库中

kylin在hive的基础上仓库olap数据cube, 完成实时数据仓库服务的任务. kylin在hive的基础上完成:

1. 将星型数据库部署在hbase上实现实时的查询服务

2. 提供restful查询接口

3. 集成BI

首先, 创建一个数据仓库工程(kylin_test_project)

其次, 点击tables标签,点击"load hive table"按钮, 同步上述的所有hive表

完成hive表和kylin的同步.

接着, 简历kylin的数据cube

点击cube 和新增cube按钮.

1. 命名cube order_cube

2. 增加fact 和 dim 表

3. 增加维度

4. 增加mesure值

5. 不用选filter条件

6. 选择开始开始时间

7. 完成

然后, build cube

可以在jobs中查看build状态. build过程实际上是把cube存到hbase中, 方便快速检索.

星型数据仓库olap工具kylin介绍的更多相关文章

  1. 星型数据仓库olap工具kylin介绍和简单使用示例

    本文转载自:https://www.cnblogs.com/hsydj/p/4515057.html 星型数据仓库olap工具kylin介绍 星型数据仓库olap工具kylin介绍 数据仓库是目前企业 ...

  2. OLAP引擎——Kylin介绍(很有用)

    转:http://blog.csdn.net/yu616568/article/details/48103415 Kylin是ebay开发的一套OLAP系统,与Mondrian不同的是,它是一个MOL ...

  3. 转: OLAP引擎——Kylin介绍

    本文转自:http://blog.csdn.net/yu616568/article/details/48103415 ,如有侵犯,立刻删除.  Kylin是ebay开发的一套OLAP系统,与Mond ...

  4. 浅淡数据仓库(二)星型模式与OLAP多维数据库

    在关系数据库管理系统中实现的维度模型称为星型模型模式,因为其结构类似星型结构.在多为数据库环境中实现的维度模型通常称为联机分析处理(OLAP)多维数据库

  5. Kylin 新定位:分析型数据仓库

    亲爱的各位社区朋友: Apache Kylin 在 2014 年 10 月开源并加入 Apache 软件基金会的孵化器,一年后从孵化器毕业成为 Apache 顶级项目.从第一天起,Kylin 的标语是 ...

  6. 《BI那点儿事》数据仓库建模:星型模式、雪片模式

    数据仓库建模 — 星型模式Example of Star Schema 数据仓库建模 — 雪片模式Example of Snowflake Schema 节省存储空间 一定程度上的范式 星形 vs.雪 ...

  7. FocusBI:租房分析&星型模型

    微信公众号:FocusBI关注可了解更多的商业智能.数据仓库.数据库开发.爬虫知识及沪深股市数据推送.问题或建议,请关注公众号发送消息留言;如果你觉得FocusBI对你有帮助,欢迎转发朋友圈或在文章末 ...

  8. 四大OLAP工具选型浅析

    OLAP(在线分析处理)这个名词是在1993年由E.F.Codd提出来的,只是,眼下市场上的主流产品差点儿都是在1993年之前就已出来,有的甚至已有三十多年的历史了.OLAP产品不少,本文将主要涉及C ...

  9. 用了星型转换的sql跑了5小时--->5mins的过程

    =================START================================ BI数据仓库环境里面跑着一个crontab job,一旦sql运行超过4hours,就会接 ...

随机推荐

  1. 一个flex buider 3 在eclipse下不能编译的问题解决

    今天处理一个遗留的项目:项目使用了flex作为界面,装好flex Builder 3 并添加插件到eclipse,eclipse使用3.7版本. 导入项目,编译,发现编译时候出现 Errors run ...

  2. ASP.NET MVC5 网站开发实践(一) - 项目框架

    前几天算是开题了,关于怎么做自己想了很多,但毕竟没做过项目既不知道这些想法有无必要,也不知道能不能实现,不过邓爷爷说过"摸着石头过河"吧.这段时间看了一些博主的文章收获很大,特别是 ...

  3. Python学习之day2

    1.执行Python脚本时打印的字符有颜色 print "\033[32;1mhello\033[0m" #打印绿色 print "\033[31;1mhello\033 ...

  4. Linux强制踢出登录用户(断线账户剔除)

    首先,用w查看登录用户 :: up days, :, users, load average: 1.00, 1.01, 1.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU ...

  5. java 每天一练(二)

    public static void main(String[] args) {    for (int i = 2; i <1000; i++) {        int sum=0;     ...

  6. 简单对比Spark和Storm

    2013年参与开发了一个类似storm的自研系统, 2014年使用过spark 4个多月,对这两个系统都有一些了解. 下面是我关于这两个系统的简单对比: Spark: 1. 基于数据并行,https: ...

  7. Node中npm 安装问题

    首先,我们的npm包无所谓安全性,所以不要使用性能和效率更慢的https,转而使用http,相关命令如下: 1.关闭npm的https   npm config set strict-ssl fals ...

  8. 将多张图片打包成zip包,一起上传

    1.前端页面 <div class="mod-body" id="showRW" style="text-align: center;font- ...

  9. 写好Java代码的30条经验总结

    成为一个优秀的Java程序员,有着良好的代码编写习惯是必不可少的.下面就让我们来看看代码编写的30条建议吧. (1) 类名首字母应该大写.字段.方法以及对象(句柄)的首字母应小写.对于所有标识符,其中 ...

  10. MySQL存储过程、触发器 小例子

    一.存储过程 语法: CREATE PROCEDURE([[IN |OUT |INOUT ] 参数名 数据类形...]) BEGIN ... END 参数: IN 输入参数 表示该参数的值必须在调用存 ...