本文转载自:https://www.cnblogs.com/hsydj/p/4515057.html

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

星型数据仓库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介绍

    星型数据仓库olap工具kylin介绍 数据仓库是目前企业级BI分析的重要平台,尤其在互联网公司,每天都会产生数以百G的日志,如何从这些日志中发现数据的规律很重要. 数据仓库是数据分析的重要工具, 每 ...

  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. Java:Apache Commons 工具类介绍及简单使用

    Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动.下面是我这几年做开发过程中自己用过的工具类做简单介绍. Commons简介 组件 功能介绍 commo ...

  5. Apache Commons 工具类介绍及简单使用

    转自:http://www.cnblogs.com/younggun/p/3247261.html Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动.下 ...

  6. Apache Commons 工具类介绍及简单使用(转载)

    原文链接 http://www.cnblogs.com/younggun/p/3247261.html Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动 ...

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

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

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

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

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

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

随机推荐

  1. Golang 笔记 4 defer、error、panic

    一.defer语句 defer语句仅能被放置在函数或方法中.它由关键字defer和一个调用表达式组成.这里的表达式所表示的既不能是对Go语言内建函数的调用也不能是对Go语言标准库代码包unsafe中的 ...

  2. PHP 高效导入导出Excel(csv)方法之fgetcsv()和fputcsv()函数

    CSV,是Comma Separated Value(逗号分隔值)的英文缩写,通常都是纯文本文件. 一.CSV数据导入函数fgetcsv() fgetcsv() 函数从文件指针中读入一行并解析 CSV ...

  3. 第四天,通过windows来执行第一个python文件步骤

    该看 第 38部分的啦

  4. ConfuserEx壳

    前言: 这几天用Rolan的时候出现了点问题,然后发现了这个非常好用的工具居然只有几百k,打算逆向一下,然后发现了ConfuserEx壳 探索: Rolan是用C#写的,刚开始用EXEinfoPE打开 ...

  5. 浅谈编码Base64、Hex、UTF-8、Unicode、GBK等

    网络上大多精彩的回答,该随笔用作自我总结: 首先计算机只认得二进制,0和1,所以我们现在看到的字都是经过二进制数据编码后的:计算机能针对0和1的组合做很多事情,这些规则都是人定义的:然后有了字节的概念 ...

  6. properties文件读取工具类

    项目中防止硬编码,经常会将一些与业务相关的数据存在properties文件中,根据不同的key加载不同的数据,所以就会有读取properties文件的东西,这篇文章仅为了以后copy方便写的. 1.添 ...

  7. background-color:transparent

    background-color没有none值   在工作中发现, 这样是没反应的, 要写这个样式才能去掉背景颜色() background-color属性详细链接: http://www.w3sch ...

  8. 剑指offer——python【第15题】反转链表

    题目描述 翻转一个链表 样例:给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null 思路 一种比较简单的方法是用“摘除法”.就是先新 ...

  9. vue构造器的内容

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  10. Luogu 1042 - 乒乓球 - [简单模拟]

    题目链接:https://www.luogu.org/problemnew/show/P1042 题目背景国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及.其中 ...