全球最具影响力的数据智能产业服务和职业发展平台

皇冠篮球比分网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
打印 上一主题 下一主题
开启左侧

[Kylin] kylin入门到实战

[复制链接]
跳转到指定楼层
楼主
发表于 2019-10-25 12:14:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 168主编 于 2019-10-25 12:16 编辑

kylin入门到实战:入门

1.概述
kylin是一款开源的分布式数据分析工具,基于hadoop之上的sql查询接口,能支持超大规模的数据分析。响应时间在亚秒级别,其核心是预计算,计算结果存放在hbase中。
2.特性
  • 可扩展超快OLAP引擎:
    Kylin是为减少在Hadoop上百亿规模数据查询延迟而设计
  • Hadoop ANSI SQL 接口:
    Kylin为Hadoop提供标准SQL支持大部分查询功能
  • 交互式查询能力:
    通过Kylin,用户可以与Hadoop数据进行亚秒级交互,在同样的数据集上提供比Hive更好的性能
  • 多维立方体(MOLAP Cube):
    用户能够在Kylin里为百亿以上数据集定义数据模型并构建立方体
  • 与BI工具无缝整合:
    Kylin提供与BI工具,如Tableau,的整合能力,即将提供对其他工具的整合
  • 其他特性:
    Job管理与监控
    压缩与编码
    增量更新
    利用HBase Coprocessor
    基于HyperLogLog的Dinstinc Count近似算法
    友好的web界面以管理,监控和使用立方体
    项目及立方体级别的访问控制安全
    支持LDAP

3.相关概念
3.1 Fact Table(事实表):
事实表是指包含了大量不冗余数据的表,其列一般有两种,分别为包含事实数据的列,包含维表foreign key的列。
3.2 Lookup table:包含了对事实表的某些列扩充说明的字段。
3.3 Dimenssion Table(维表):
由fact table和lookup table 抽象出来的表,包含了多个相关的列,提供对数据不同维度的观察,其中每列的值的数目称为cardinatily。
3.4 model:用来定义用户需要使用的hive表名,及所包含的维度列、度量列、partition列和date格式。
3.5 cube:用来定义某具体查询时会涉及到的维度列及相互之间的关系(如层级关系)、度量列的具体类型(如max,min,sum)等,一个model下可存在多个cube。

kylin入门到实战:cube详述


1.什么是cube?
cube是所有dimession的组合,每一种dimession的组合称之为cuboid。某一有n个dimession的cube会有2n个cuboid,如图:

对应一张hive表,有time,item,location,supplier这四个维度,则0-D cuboid时对应的查询语句为 select sum(money) from table;1-D cuboid对应的查询语句有四个,分别为select sum(money) from table group by time,以及select sum(money) from table group by item,以及select sum(money) from table group by location。对应的在2-D时group by 后面的维度会是time,item,location,supplier两两组合。如果不采取优化措施,理论上kylin在预计算过程中会对上述每一种组合进行预计算,随着维度的增加,计算量将会呈几何倍数的增长。为了解决这种问题,kylin对dimession做了分类,见下文。
2.dimession
为了减少cuboid的数量,kylin对dimession做了如下分类
normal:最为普通常见的dimession类型,与其他类型的dimession组成cuboid。
mandatory:每次查询均会使用到的dimession,在下图中A为Mandatory dimension,则与B、C总共构成了4个cuboid,相较于normal dimension的cuboid(23=8)减少了一半。

在实际生产应用中,比如对于日报表的分析,可能日期就是一个mandatory dimession。
hierarchy:带层级的dimession,如:年->月->日,要求子级的父级必须存在。如下的例子中cuboid由2n降为了n+1。
然而,Kylin的Hierarchy dimensions并没有做集合包含约束,比如:kylin_sales_cube定义Hierarchy dimension为META_CATEG_NAME->CATEG_LVL2_NAME->CATEG_LVL3_NAME,但是同一个CATEG_LVL2_NAME可以对应不同META_CATEG_NAME。因此,hierarchy 显得非常鸡肋,以至于在Kylin后台处理时被废弃了。
derived:指该dimession与维表的primary key是一一对应的关系,可以有效减少cuboid的数量,derived dimession只能由Lookup Table生成。

3.measure
measure为事实表的度量值,kylin提供了下面几个函数:
sum,count,max,min,avarage,count_distinct
其中count_distinct有两种实现方式:
(1)近似Count Distinct。Apache Kylin使用HyperLogLog算法实现了近似Count Distinct,提供了错误率从9.75%到1.22%几种精度供选择;
算法计算后的Count Distinct指标,理论上,结果最大只有64KB,最低的错误率是1.22%;这种实现方式用在需要快速计算、节省存储空间,并且能接受错误率的Count Distinct指标计算。
(2)准Count Distinct。从1.5.3版本开始,Kylin中实现了基于bitmap的精确Count Distinct计算方式。当数据类型为tiny int(byte)、small int(short)以及int,
会直接将数据值映射到bitmap中;当数据类型为long,string或者其他,则需要将数据值以字符串形式编码成dict(字典),再将字典ID映射到bitmap;
指标计算后的结果,并不是计数后的值,而是包含了序列化值的bitmap.这样,才能确保在任意维度上的Count Distinct结果是正确的。
这种实现方式提供了精确的无错误的Count Distinct结果,但是需要更多的存储资源,如果数据中的不重复值超过百万,结果所占的存储应该会达到几百MB。

来源:大数据随笔

楼主热帖
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 赞 踩

欢迎随机打赏,买杯咖啡加点能量

×

打赏支付方式:

打赏

帖子永久地址: 

皇冠篮球比分网 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与皇冠篮球比分网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和皇冠篮球比分网的同意,并添加本文出处
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它网站,但并不代表本站赞同其观点和对其真实性负责
6、本站遵循行业规范,任何转载的稿件都会明确标注作者和来源,若标注有误或遗漏而侵犯到任何版权问题,请尽快告知,本站将及时删除
7、皇冠篮球比分网管理员和版主有权不事先通知发贴者而删除本文

皇冠篮球比分网(www.bi168.cn)是国内首家系统性关注大数据科学与人工智能的社区媒体!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|皇冠篮球比分网 ( 粤icp备14060679号-1|申请友情链接

GMT+8, 2020-1-21 20:46 , Processed in 0.099012 second(s), 21 queries , Xcache On.

Powered by 皇冠比分

© 2012-2014 皇冠比分网

快速回复 返回顶部 返回列表