kylin适用场景

  • OLAP
  • 它适合数据量大,查询维度多,但是业务改动不频繁的场景。因为业务多,则kylin的cube很多。每次业务变更,kylin修改的工作量大,且每次全量跑数据耗费时间比较长。
  • 它是采用空间换时间,预先将结果计算出来。维度较多时,数据膨胀很快。
  • 如果查询结果可以直接命中,则查询速度很快;如果cube未覆盖,则查询很慢。

如果业务频繁迭代,初期可以考虑用mysql来支撑,等业务比较稳定以后,通过kylin来优化查询速度。

关键概念

  1. 维度:维度是观察数据的角度。例如:销售日期、销售地点。计算机一点的描述就是在SQL中就是where、group by里的字段。

  2. 度量(指标):度量是具体考察的聚合数量值,例如:销售数量、销售金额、人均购买量。计算机一点描述就是在SQL中就是聚合函数。

    –COUNT:统计行数量
    
    –SUM:获取单个列的合计值
    
    –AVG:计算某个列的平均值
    
    –MAX:计算列的最大值
    
    –MIN:计算列的最小值
    
    group by 关键字表示要进行分类聚合的字段,比如要按照班级分类进行学生人数统计,班级就应该放在group by 的后面。
  3. Aggregation Groups

    维度聚合组:给维度分组,属于不同组的维度不会组合(各组内部才能随意组合,组和组之间不组合)。

    主要作用:减少维度组合。

    include:组里的所有维度字段。

    A、 联合维度Joint Dimensions:简单说:所有查询维度的集合>=联合维度。联合维度视为一个维度。适用于:多个维度都是查询条件,如group by outid,day,则outid、day作为联合维度。考虑查询条件中的非动态拼接的sql,如果有where、group by有多个维度,可以考虑设为联合维度。

    有效剪枝。跨联合的查询会把多个联合维度查询出来,再合并。(根据查询业务分组,就能有效剪枝,并且没有关联多个的查询,从而效率高)。

    B、 必要维度Mandatory Dimensions:简单说:所有查询维度的集合>必要维度。join条件、查询必须带上的条件,作为必要维度。(多个必要维度时,生成的维度组合可能是不包括必要维度组合本身的。在查询中出现了按照必要维度查询不了的情况【这里可能是kylin的一个bug,必要维度组合本身不产生维度,但是sql解析的时候认为产生了所以会匹配成功,然后报错,并且挡住了其他可能支持这个查询的cube的匹配】)多个必要维度可以用联合维度代替。如果维度组(聚合组)的维度包含必要维度所有列,则查询必要维度就可以进行,因为可以通过必要维度和其他维度组合后的结果来汇总必要维度的查询结果。

    C、 派生维度derived:把维度表的多个维度字段,不用当作维度构建;而是通过维度表的主键来查询,然后再通过维度表去找到维度。当维度表主键和维度字段不是一对一的时候,还需要二次聚合。这个能剪枝,但是影响查询效率。

    派生维度是针对维度表的,如果某张维度表有多个维度,如果该维度表一个或者多个列和维度表的主键是一一对应的,则可以将这些维度设置为派生维度。这样在Kylin内部会将其统一用维度表的主键来替换,以降低维度组合的数目。但查询效率会降低,因为Kylin在使用维度表主键进行聚合后,查询时需要再将主键转换为真正的维度列返回给用户。

    D、 层级维度Hierarchy Dimensions:指一系列具有层级关系的维度组成一个层级维度,设置了层级之后,对Cuboid增加了约束,低Level的维度一定要伴随高Level的维度出现,从而使维度组合大大减少。。比如校区、院系、专业、班级

    高基数维度,在groups中出现次数较多的维度。

  • sql与kylin概念对应关系:
sql kylin
select 语句中的函数中的字段 度量
非select语句中的字段和select语句中的直接使用的字段,如where、group by、 维度

举例:

select classname, sum(consume)
from consummer
where gradelevel = ''
group by classcode; 维度: classname、gradelevel、classcode, 其中classname在某些情况下可以设为派生维度。
度量:consume

普通用法与流程

hive建表与导入数据-->新建model-->根据model新建cube

DDL

  • 建外部表
----edu_grade_filter_r------
DROP TABLE IF EXISTS edu_grade_filter_r; create external table edu_grade_filter_r
(id BIGINT, outid string,name string,semester string, course_no string, course_name string, score string, course_natures string,
course_properties string, class_hour string,credit string, exam_natures string, school_code string, grade_level string,
faculty_code string, major_code string, class_code string, point string, course_properties_new string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE location '/jkd/edu_grade_filter_r'; -- load data 适合分区表的情况
-- load data inpath '/jkd/edu_grade/edu_grade_filter_r.txt.txt' into table edu_grade_filter_r;

model

  1. Data Model:表join
  2. Dimensions:必须要选,后面才能在cube中选维度。
  3. Measures:度量

cube

  1. 选维度时,从表一般选normal维度,不选derived派生维度
  2. Aggregation Groups-->include:组里的维度所有字段
  • 如果在多个分组中漏掉了某个维度,将导致维度膨胀,cube占用空间很大。
  1. model-->cube(action:build)-->job(monitor)。

如果构建成功,则job不能再重新跑,需要在cube处disabled,然后再build;如果有修改,则先purge(清除),再重新build。

  1. cube构建成功后,可以通过insight查看sql的结果。
cube操作说明

Drop:丢弃现有cube,条件:无Pending, Running, Error 状态的job.

Edit:编辑现有cube,条件:cube需处于disable状态。

Refresh:重建某已有时间段数据,针对于已build时间段的源数据发生了改变的情况。

Merge:手动触发merge操作。

Enable:使拥有至少一个有效segment的cube从disable变为enable状态。

Purge:清空所有该cube的数据。

Clone:克隆一个新的cube,可设置新的名字,其他相关配置与原cube相同。

Disable:使一个处于ready状态的cube变为Disable状态,查询不会从disable的cube中获取数据。

参考文献

  • Apache Kylin 权威指南

tips:本文属于自己学习和实践过程的记录,很多图和文字都粘贴自网上文章,没有注明引用请包涵!如有任何问题请留言或邮件通知,我会及时回复。

kylin实战(一)的更多相关文章

  1. kylin实战系列(一)

    kylin实战系列(一) 把之前kylin的实践小结一下,以备以后查看.

  2. 【Kylin实战】Hive复杂数据类型与视图

    1. 引言 在分析广告日志时,会有这样的多维分析需求: 曝光.点击用户分别有多少? 标签能覆盖多少广告用户? 各个标签(标注)类别能覆盖的曝光.点击在各个DSP上所覆盖的用户数 -- 广告数据与标签数 ...

  3. 【Kylin实战】邮件报表生成

    在cube build完成后,我的工作是写sql生成数据分析邮件报表.但是,问题是这种重复劳动效率低.易出错.浪费时间.还好Kylin提供RESTful API,可以将这种数据分析需求转换成HTTP请 ...

  4. CDH+Kylin三部曲之一:准备工作

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  5. kylin从入门到实战:实际案例

    版权申明:转载请注明出处.文章来源:http://bigdataer.net/?p=308 排版乱?请移步原文获得更好的阅读体验 前面两篇文章已经介绍了kylin的相关概念以及cube的一些原理,这篇 ...

  6. kylin入门到实战:cube详述

    版权申明:转载请注明出处. 文章来源:http://bigdataer.net/?p=306 排版乱?请移步原文获得更好的阅读体验 1.什么是cube? cube是所有dimession的组合,每一种 ...

  7. kylin入门到实战:入门

    版权申明:转载请注明出处.文章来源:http://bigdataer.net/?p=292 排版乱?请移步原文获得更好的阅读体验 1.概述 kylin是一款开源的分布式数据分析工具,基于hadoop之 ...

  8. 《基于Apache Kylin构建大数据分析平台》

    Kyligence联合创始人兼CEO,Apache Kylin项目管理委员会主席(PMC Chair)韩卿 武汉市云升科技发展有限公司董事长,<智慧城市-大数据.物联网和云计算之应用>作者 ...

  9. Kylin的cube模型

    1. 数据仓库的相关概念 OLAP 大部分数据库系统的主要任务是执行联机事务处理和查询处理,这种处理被称为OLTP(Online Transaction Processing, OLTP),面向的是顾 ...

随机推荐

  1. docker运行报错docker0: iptables: No chain/target/match by that name.

    转自:https://blog.csdn.net/wohaqiyi/article/details/84450562 docker运行报错docker0: iptables: No chain/tar ...

  2. centos7安装oracle1201c

    root身份安装依赖包: yum -y install binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33*.i686 el ...

  3. 将本地镜像上传到Docker镜像仓库

    ⒈在Docker Hub(Docker官方镜像仓库)注册自己的用户名. ⒉在Docker中使用docker login命令登录自己的用户名密码. ⒊使用docker push 镜像名称 上传本地镜像到 ...

  4. Python的IDE之Jupyter的使用

    Python的IDE之Jupyter的使用 今天给大家分享的是Jupyter安装和基本使用教程,同时在我安装的过程中遇到了一些问题,解决方法,一并和大家分享 一.Jupyter介绍 Jupyter N ...

  5. Ubuntu下安卓模拟器的选择

    8G内存的话,一般开个AS,再启动默认的模拟器的话,基本就有点卡了,如果再打开Idea,很容易卡死. 所以两个spingboot的后台服务只能直接命令行跑个jar包,不方便调试,webview加载的v ...

  6. CA机构及SSL证书

    互联网安全形势日趋严峻,企业重视自身互联网安全已成必然,SSL认证成大势所趋.要部署SSL证书最首先就是选好CA机构!其次选择适合自己的SSL证书!今天就来介绍一下如何选择CA机构及SSL证书! 首先 ...

  7. 阿里云语音合成(汉语英语)带UI界面的小程序(python)

    一,项目说明 将汉文转汉语.英文转英语,同时又有逗号<###English###>,<,,,>和句号<...>标志符用于文件处理.其中英文包含在### 英文 ### ...

  8. 修改源码去除zblog博客分类目录的RSS图标

    zblog博客的所建立的分类默认前面是有一个RSS图标的,如下图所示: 其实这个图标的存在并不能起到太大的美化作用,增加用户订阅数量的作用.那么应该如何去掉这个RSS图标呢? 这个RSS图标的生成在z ...

  9. windows server12 FTP 创建后常见问题

    一:用administrator 关闭防火墙可以访问,但是开启后不能访问 今天在windows server 2008 R2上安装了FTP,安装过程如下,然后添加内置防火墙设置,设置后发现本地可以访问 ...

  10. tftp服务器的搭建和使用

    一.tftp介绍   TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,==提供不复 ...