一 Kylin介绍
kylin是一款OLAP工具,背靠Hadoop,HBase,Spark,Kafka等大山,提供神奇体验。
Kylin 安装与启动
除了常规环境,还需要hadoop的historyjobserver启动。
具体参见官网,启动较为容易。
度量计算
目前提供9种计算方法。
sum
min
- max
- count
- count_distinct
- top_n
- raw
- extended_column
- percentile
建模心得
在通过星形模型建立事实表+维度表的过程中,操作比较复杂。但是,通过view的方式,就比较简单。
view建模的方式,所有结果都在一张表里,只需要对该表进行维度和度量的划分即可。
建模结果
测试结果1:
测试结果2:
实际问题
问题1:在同一个project里的Insight,可以看到所用cube的维度,但是不能共用,会报:No model found for rel
问题2:kylin不支持复杂的列,比如map,array类型。问题参见:
https://mail-archives.apache.org/mod_mbox/kylin-dev/201512.mbox/%3C565D565C.3060205@jd.com%3E
解决方法:创建该表的视图,剔除复杂列
问题3:kylin建model时,想做增量构建,在指定某列时间作为partition时,该列内容应该满足‘yyyy-MM-dd HH:mm:ss’的样子,不要使用unix_timestamp的类型。否则,构建后cube大小为零。
问题4:kylin建cube所用的字段最好不要采用kylin 关键字,例如:year, month, day, hour等。否则写SQL时,不太友好。例如:
想查一段 简单的pv和uv SQL,
select platform, year, month, day ,count(*) as pv count(distinct guid) as uv from kylin_tracking_view group by platform, year, month, day
在Kylin的查询界面中,应当这么写:
select platform,
"YEAR",
"MONTH",
"DAY",
count(*) as pv,
count(distinct guid) as uv
from kylin_tracking_view
group by
platform,
"YEAR",
"MONTH",
"DAY"
可以看出,关键词必须全部大写,且被双引号(必须是双引号,单引是自定义常量)包住。
建议提前规范好数据源,免得造成巨大的返工。
问题5:build维度过不去
具体报错: [BadQueryDetector] service.BadQueryDetector:160 : System free memory less than 100 MB. 0 queries running
暂无解决办法。
这个问题可能是,kylin维度较多,把regionserver搞成僵死,进而导致的。
问题6: kylin 不支持中文列名。kylin在创建中间表时,会使用中文+英文的方式做拼接,这个过程会报错。
问题7:kylin 2.2.0 版本用户相关比较难搞。默认账户 ADMIN有问题,暂无好的解决办法。
一种解决方式:升级到 2.3.0版本,修复了230个bug,对用户更加友好。
问题8:kylin 2.3以后采用spark 2.1.2版本,需要进行相关的配置。
解决方式:https://kylin.apache.org/docs23/tutorial/cube_spark.html
Kylin的一些问题
基础
关于Kylin的架构和原理,有图可供参考:Kylin 的架构和原理
Kylin比较详细的介绍:Kylin对大数据量的多维分析
关于Kylin Cube构建原理,落地到HBase的过程: Apache Kylin Cube 构建原理
关于Kylin SQL 语法:SQL language
关于Kylin的关键字:
关键字源码
关于一次正常查询的运行原理:Kylin进阶之路
Kylin使用calcite做sql解析,可以参考calcite的语法文档:https://calcite.apache.org/
维度问题
关于维度的聚合组中各个含义,请参考
https://kylin.apache.org/blog/2016/02/18/new-aggregation-group/
Kylin Mandatory Dimension(必要维度):【技术帖】Apache Kylin高级设置: 必要维度 (Mandatory Dimension)原理解析
Kylin Hierarchy Dimension(层级维度):【技术帖】Apache Kylin 高级设置:层级维度(Hierarchy Dimension)原理解析
Kylin Joint Dimension(联合维度):【技术帖】Apache Kylin 高级设置:联合维度(Joint Dimension)原理解析
Kylin Aggregation Group(聚合组):【技术帖】Apache Kylin 高级设置:聚合组(Aggregation Group)原理解析
Server端
配置负载均衡:【技术贴】如何部署Apache Kylin集群实现负载均衡?
进阶优化
Kylin cube算法:Apache Kylin的快速数据立方体算法——概述
Kylin cube介绍:Kylin使用之创建Cube和高级设置
别人的Cube优化案例:Apache Kylin cube优化指南
优化案例:Apache Kylin 深入Cube和查询优化 提升Cube
API开发
脚本触发增量更新:Kylin定时增量build
Kylin+superset 可视化方案案例:Kylin初体验总结
参考
很不错的博文: