kylin对接hive实现实时查询
前提:
安装kylin之前,需要安装hadoop2.0、hbase、hive,并且对版本有要求,可以参照官网链接
http://kylin.apache.org/cn/docs/install/index.html
我这边用的版本为:
hadoop2.7.5
hbase1.4.1
hive2.3.2
安装可以参考我前面的博客
kylin安装:
wget http://www.apache.org/dyn/closer.cgi/kylin/apache-kylin-2.4.1/apache-kylin-2.4.1-bin-hbase1x.tar.gz -C /usr/local/src
tar -zxvf apache-kylin-2.4.1-bin-hbase1x.tar.gz
mv apache-kylin-2.4.1-bin /usr/local/kylin
加入到环境变量:
vim ~/.bashrc
KYLIN_HOME=/usr/local/kylin
PATH=$PATH:$KYLIN_HOME/bin #刷新环境变量
source ~/.bashrc
检测kylin环境是否有问题:
/usr/local/kylin/bin/check-env.sh
启动kylin:
/usr/local/kylin/bin/kylin.sh start
kylin登录:
链接:192.168.1.99:7070/kylin/
用户名:ADMIN
密码:KYLIN
添加一个project:
添加完之后,选择该project
同步hive表到kylin:
点击之后,同步自己需要操作数据库的表
构建一个model:
1. Models->new->New Model
2. Model Info
3. Data Model (添加 Fact Table)
其中Add Lookup Table可以做一些表与表之间的关联,如同这种格式(以下我是同一张表进行join,Table Alias可以自己设置,不要重名)
4. 构建维度表
维度表是与事实表相对应的一种表;它保存了维度的属性值,可以跟事实表做关联;相当于将事实表上经常重复的属性抽取、规范出来用一张表进行管理
选择维度表的字段:
假如我现在要计算每天(datetime)各种频道(channelid)下,不同节目(p1)对应的事件(eventid)的数量,其中datetime作为条件,其它三种为group by/order by必须字段,得这四种必须作为维度表中的字段,才能得到最后结果
5. 构建度量
说明:如果是上面只需得到数量(count),则measures不需要添加任何字段;
如果得到的结果需要涉及某个字段,如:需统计每天(datetime)各种频道(channelid)下,不同节目(p1)对应的总收入(price),则需要把price字段添加进来(dimensions和measures都必须是事实表中的字段,还不能重复)
6. Settings
说明:主要是针对增量构建,其中事实表中需要有对应的日期字段,下图中事实表SODA_REPORT有日期字段DATETIME(yyyyMMdd),格式需要对应一致;如果你还有时间字段并且需要添加,则如下图所示:
其中还有过滤条件,如果我只需要eventid为101和102,则
最后保存即可
构建一个cube:
说明:对于N个维度来说,组合所有可能性共有2的N次方种。对于每一种维度的组合,将度量做聚合计算,然后将运算的结果保存为一个物化视图,称为Cuboid。所有维度组合的Cuboid作为一个整体,被称为Cube。
如:xxx_report包含datetime/channeled/p1/eventid四个维度,那么所有维度的组合就有2的4次方,即16种,计算Cubiod,即按维度来聚合
Select channeled, eventid, p1, count(*) as c_count from xxx_report \
where datetime=’20180918’ group by channeled, eventid, p1
将计算的结果保存为物化视图,所有Cuboid物化视图的总称就是Cube。
1. Cube Info
2. Dimensions
说明:增加你需要用到维度表的字段,我这里全选
3. Measures
说明:按默认求count就行,因为之前构建model的时候,measure(度量)我们没有添加任何字段,如果前面添加过,我们可以用SUM、MAX、MIN等函数
4. Refresh Setting
说明:这一步主要是为增量构建cube设计的
Auto Merge Thresholds:自动合并小的segments到中等甚至更大的segment。如果不想合并,则删除默认2个选项
Volatile Range:默认为0,会自动合并所有可能的cube segments,或者用“Auto Merge”将不会合并最新的[Volatile Range]天的cube segments
Retention Threshold:只会保存cube过去几天的segment,旧的segment将会自动从头部删除,0表示不启用这个功能
Partition State Date:cube的开始日期
5. Advanced Setting (高级设置)
说明:
Aggregation Groups: Cube 中的维度可以划分到多个聚合组中。默认 kylin 会把所有维度放在一个聚合组,当维度较多时,产生的组合数可能是巨大的,会造成 Cube 爆炸;如果你很好的了解你的查询模式,那么你可以创建多个聚合组。在每个聚合组内,使用 “Mandatory Dimensions”, “Hierarchy Dimensions” 和 “Joint Dimensions” 来进一步优化维度组合。
Mandatory Dimensions: 必要维度,用于总是出现的维度。例如,如果你的查询中总是会带有 “ORDER_DATE” 做为 group by 或 过滤条件, 那么它可以被声明为必要维度。这样一来,所有不含此维度的 cuboid 就可以被跳过计算。(比如,Mandatory Dimensions设置为p1,所有不包含该维度p1的cuboid会被跳过计算,当我们查询select channeled, count(*) from soda_report where datetime=’20180919’ group by channeled时,没有现成的完全匹配的 Cuboid,Kylin 会通过在线计算的方式,从现有的 Cuboid 中计算出最终结果)
Hierarchy Dimensions: 层级维度,例如 “国家” -> “省” -> “市” 是一个层级;不符合此层级关系的 cuboid 可以被跳过计算,例如 [“省”], [“市”]. 定义层级维度时,将父级别维度放在子维度的左边。
Joint Dimensions: 联合维度,有些维度往往一起出现,或者它们的基数非常接近(有1:1映射关系)。例如 “user_id” 和 “email”。把多个维度定义为组合关系后,所有不符合此关系的 cuboids 会被跳过计算。
6. configuration Overwrites
说明:Kylin允许在Cube级别覆盖部分kylin.properties中的配置,你可以在这里定义覆盖的属性,如果不需要,则Next
7. Overview(概述)
对cube进行build:
说明:build开始时间是在构建cube的时候设置,结束时间自己设置,等到下次build的时候,上次的end_date为这次的start_date
通过点击monitor来查看build的进展情况,以下是我完成的增量build:
Kylin中Cube的Build过程,其实是将所有的维度组合事先计算,存储于HBase中,以空间换时间,HTable对应的RowKey,就是各种维度组合,指标存在Column中,这样,将不同维度组合查询SQL,转换成基于RowKey的范围扫描,然后对指标进行汇总计算。
测试:
查看20180917当天,各种频道(channelid)下,不同节目(p1)对应事件(eventid)的数量,如图所示
kylin对接hive实现实时查询的更多相关文章
- PHP—— 商品物流实时查询接口 (快递100API对接)
PHP后台 与前端 对接商品物流信息的接口 运用的 快递100的API接口 public function getExpress() { $user_id = input('post.user_ ...
- Impala简介PB级大数据实时查询分析引擎
1.Impala简介 • Cloudera公司推出,提供对HDFS.Hbase数据的高性能.低延迟的交互式SQL查询功能. • 基于Hive使用内存计算,兼顾数据仓库.具有实时.批处理.多并发等优点 ...
- 实时查询引擎 - Facebook Presto 介绍与应用
1. Presto 是什么 Facebook presto是什么,继Facebook创建了HIVE神器后的又一以SQL语言作为接口的分布式实时查询引擎,可以对PB级的数据进行快速的交互式查询.它支 ...
- SQL Server2016 新功能实时查询统计信息
SQL Server2016 新功能实时查询统计信息 很多时候有这样的场景,开发抱怨DBA没有调优好数据库,DBA抱怨开发写的程序代码差,因此,DBA和开发都成为了死对头,无法真正排查问题. DBA只 ...
- hive php连接查询
baidu hive php PHP连接Hive执行sql查询 php通过 thrift访问hadoop的hive php开发Hive Web查询 php连接hive执行sql查询 利用python将 ...
- hive的join查询
hive的join查询 语法 join_table: table_reference [INNER] JOIN table_factor [join_condition] | table_refere ...
- Hive[6] HiveQL 查询
6.1 SELECT ... FROM 语句 hive> SELECT name,salary FROM employees; --普通查询 hive>SELECT e.n ...
- Druid:一个用于大数据实时处理的开源分布式系统——大数据实时查询和分析的高容错、高性能开源分布式系统
转自:http://www.36dsj.com/archives/28590 Druid 是一个用于大数据实时查询和分析的高容错.高性能开源分布式系统,旨在快速处理大规模的数据,并能够实现快速查询和分 ...
- Hive之数据查询
Hive之数据查询 发布于:2013 年 10 月 11 日 由 Aaron发布于: Hive 一,排序和聚合 对于排序有两种方式,一种是order by 一种是sort by order by 会对 ...
随机推荐
- Redis 数据结构的实现
Redis 数据结构的实现 先看个对照关系: Redis数据结构 实现一 实现二 string 整数(如果value能够表示为整数) 字符串 hash 压缩列表(只包含少量键值对, 并且每个键值对的键 ...
- osggeometry修改更新顶点
osg::Geometry *geometry = geode->getDrawable()->asGeometry();geometry->setDataVariance(osg: ...
- Nginx模块开发与架构解析(nginx安装、配置说明)
第一章 研究nginx前的准备工作 Linux操作系统需要2.6及其以上的内核(支持epoll) 使用nginx的必备软件 Linux内核参数优化方案 安装nginx 控制nginx 第二章 ngin ...
- 手把手教你提交文件到git
手把手教你使用git提交到github 作者 数据分析与优化 关注 2016.07.17 10:25 字数 7342 阅读 399评论 1喜欢 6 摘要Git是分布式版本控制系统,那么它就没有中央服务 ...
- NodePort 只能在node节点上访问,外部无法访问
创建了一个NodePort类型的jenkins service,node port 30000,node节点ip为192.168.56.101, 在node节点上通过浏览器能正常访问http://19 ...
- python描述符
class Type: def __init__(self, key, expect_type): self.key = key self.expect_type = expect_type def ...
- Gym 101981G - Pyramid - [打表找规律][2018-2019 ACM-ICPC Asia Nanjing Regional Contest Problem G]
题目链接:http://codeforces.com/gym/101981/attachments The use of the triangle in the New Age practices s ...
- Web开发——HTML基础(图像、音频和视频内容)
参考: 参考:HTML中的图像 参考:视频和音频内容 目录: 1.HTML中的图像 1.1 我们如何在网页上放置图像? (1)替代文字(alt) (2)宽度和高度 (3)图片标题 1.2 用图形和图形 ...
- RNN Train和Test Mismatch
李宏毅深度学习 https://www.bilibili.com/video/av9770302/?p=8 在看RNN的时候,你是不是也会觉得有些奇怪, Train的过程中, 是把训练集中的结果作为下 ...
- 关于STM32时钟系统
初学STM32,感觉最蛋疼的是它的时钟系统,每次看到它的那个时钟树就有点晕,虽然看了很多这方面的资料,甚至也已经写过很多STM32的模块代码,做过一些小项目,但一直还是对这一块模模糊糊,似懂非懂,所以 ...