我们常做重复的事情,重复的事情做多了,成就了当下的我们!

统计某个页面的访问次数,其上按钮的点击次数,按照分钟、小时、日、周、月、年汇总;统计某个商品的销售件数,按日、周、月、年汇总;统计服务的调用次数,失败次数,平均耗时,最大耗时,最小耗时,也按照分钟、小时、日、周、月、年汇总;...... 进而我们会去输出设备的可用性指标、输出员工的代码提交频次、输出BUG率等等
从日志、队列、数据库去抓取数据,使用Map-Reduce的思想,分层运算,渐次汇总; 安排一两个人来开发,再让产品或运营来描述需求,让相关的技术负责人来讲解数据的来龙去脉.....
Kylin
Kylin是这样一个产品,使用空间换时间的概念,对需要经常执行的统计进行预先运算,并存放下来,以此来加速数据的访问。其清晰定义了维度、度量,简单来理解维度就是如何对数据分类(时间区间、类别等),度量就是对应分类下的统计值(最大、最小、平均、求和、计数);可清晰用一个select cat,type,dayofyear,sum(price) from tabel1 group by cat,type,dayofyear来类比。度量就是price,维度就是cat,type,dayofyear。
kylin概览
Kylin将数据表分为事实表和维度表,分别表述实际发生的每一个事件,以及用来对这些事件进行分类的维度。其提供的示例数据表中典型的有KYLIN_SALES为事实表,
事实表
维度表如下:
维度表:时间
维度表:分类
安装
环境如下
<@:~>uname -a Linux VM_0_2_centos 3.10.0-1160.6.1.el7.x86_64 #1 SMP Tue Nov 17 13:59:11 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux <@:~>free -m total used free shared buff/cache available Mem: 7820 4931 957 1 1931 2589 Swap: 0 0 0 <@:~>cat /proc/meminfo MemTotal: 8008644 kB
环境信息
使用docker安装kylin体验环境:
docker run -d \ -m 8G \ -p 7070:7070 \ -p 8088:8088 \ -p 50070:50070 \ -p 8032:8032 \ -p 8042:8042 \ -p 16010:16010 \ apachekylin/apache-kylin-standalone:3.1.0
实例
构建查询
基于kylin给出的数据,直接使用hive查询要花20秒,基于kylin查询只要0.2秒。
hive> select part_dt,count(1) from kylin_sales group by part_dt limit 2; Query ID = root_20220115120506_6601f25e-7ead-49f7-a78f-96c2246df66d Total jobs = 1 Launching Job 1 out of 1 number of reduce tasks not specified. Estimated from input data size: 1 In order to change the average load for a reducer (in bytes): set hive.exec.reducers.bytes.per.reducer=<number> In order to limit the maximum number of reducers: set hive.exec.reducers.max=<number> In order to set a constant number of reducers: set MapReduce.job.reduces=<number> Starting Job = job_1642243053002_0019, Tracking URL = http://69277e2e84c9:8088/proxy/application_1642243053002_0019/ Kill Command = /home/admin/Hadoop-2.7.0/bin/hadoop job -kill job_1642243053002_0019 Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 1 2022-01-15 12:05:11,993 Stage-1 map = 0%, reduce = 0% 2022-01-15 12:05:17,150 Stage-1 map = 100%, reduce = 0%, Cumulative CPU 1.83 sec 2022-01-15 12:05:22,324 Stage-1 map = 100%, reduce = 100%, Cumulative CPU 4.21 sec MapReduce Total cumulative CPU time: 4 seconds 210 msec Ended Job = job_1642243053002_0019 MapReduce Jobs Launched: Stage-Stage-1: Map: 1 Reduce: 1 Cumulative CPU: 4.21 sec HDFS Read: 807423 HDFS Write: 28 SUCCESS Total MapReduce CPU Time Spent: 4 seconds 210 msec OK 2012-01-01 12 2012-01-02 17 Time taken: 16.512 seconds, Fetched: 2 row(s)
Kylin只要0.19秒
再来一个,按照周来汇总数据;kylin要0.18s,hive要25s。
select KYLIN_CAL_DT.week_beg_dt,count(1),sum(kylin_sales.price) from kylin_sales as kylin_sales INNER JOIN KYLIN_CAL_DT as KYLIN_CAL_DT ON kylin_sales.PART_DT = KYLIN_CAL_DT.CAL_DT group by KYLIN_CAL_DT.week_beg_dt limit 2;
kylin
hive
集成Superset
在superset运行环境中按照kylin客户端,并重启superset。
pip install kylinpy
可以对密码中的特殊字符使用urlcode编码
然后就可以在superset里面访问此数据源了
SQL Lab查看kylin数据
superset使用kylin大多数都是要用组合查询,所以添加表基本没啥意义,基于sqllab构建sql后再可视化最佳【这里要把superset改为支持动态sql template】
构建的dashboard如上
小坑
hive启动会报错,需修改hive的启动脚本【/home/admin/apache-hive-1.2.1-bin/bin/hive】
hive show database; use kylin4; show tables;
spark 2.0之后的版本jar分离了多个,需要修改


还没有评论,来说两句吧...