kylin新手爬坑体验

之前一直在做一些基于spark&hive统计分析相关的开发工作,大体流程是通过sparkSQL抽取hive中的数据,统计结果回存hive表再使用sqoop实现hive与mysql的数据传递,通过azkaban制定任务流完成完成分析过程,使用这种方式在处理固定维度的分析时没有任何问题,但是当出现维度变化的自查询时就会出现无法正确统计的问题,例如:时间维度变化的uv结果统计。在经过一番调研和尝试之后决定使用kylin进行一下尝试,因为是爬坑经历这里就不讨论kylin的原理了,感兴趣的老铁可以去kylin官网看一下。闲话不多说进入正题,记录一下我的爬坑经历供大家一起讨论。
1.安装部署:本人属于纯纯的运维方面知识的小白,但是就是这么白的我安装官网教程20分钟左右也搞定了部署,但是有一点值得注意的是在完成部署与环境变量配置后需要对kylin安装目录下的:$KYLIN_HOME/bin/kylin.sh 文件进行一下修改,需要将"hive_dependency"添加到 “HBASE_CLASSPATH_PREFIX” 中不然会报“org/apache/hadoop/hive/conf/HiveConf”连接不到hive表的错误(如果已经正确配置了则不需要修改,当时我做的时候出现了这个问题);

2.在完成配置部署后就可以运行kylin尝试第一次构建cube,这里推荐尝试第一次时使用kylin自带的例子按照官网的教程来就可以。在运行例子之前需要先检查mr的历史服务是否正常开启,如果没有需要在$HADOOP_HOME的sbin目录下执行“ $HADOOP_HOME/sbin/mr-jobhistory-daemon.sh start historyserver”命令启动mr历史服务,因为kylin在运行时需要依赖mr的历史服务,如果不开启会报连不上10020端口的错误;

3.SQL语法:kylin支持的语法是Apache Calcite在SQL写法上会写SQL的基本都可以正常使用,但是我遇到了两个坑
(1)对if的支持,之前用if在hive和sparkSQL上做的很多骚操作在kylin上好像行不通了,为此特地去查了一下Calcite SQL reference 没有发现相关的语法介绍最后换成case when搞定的;
(2)关联查询时除了关联条件之外的检索条件不能写在ON后面了,例如 SELECT COUNT(1) FROM a LEFT JOIN b ON (a.id = b.id and a.name=’’)这种写法要改成SELECT COUNT(1) FROM a LEFT JOIN b ON (a.id = b.id) WHERE a.name=’’;

4.在创建cube时如果出现了多个实时表之间也有关联的情况直接在kylin上是没有办法直接进行实时表之间的关联的,经过请教大神,大神给出解决这种问题的方案大概分一下几种:
(1)在构建cube之前实现对两张实时表做关联,做一张新的中间表出来,将该中间表作为构建cube的事实表,完成cube的构建(这种方案我个人感觉适合集群资源充足情况);
(2)使用hive视图思路上与第一种相似,更灵活一些;
(3)将聚合逻辑上提放到查询结果后通过代码进行数据整理;(对聚合结果较小的情况感觉还能应付一下)

5.使用kylin的感受:
(1)使用kylin给我的第一个感受就是kylin能够反向指导数仓的建设,因为在构建cube的过程中需要严格按照事实表,维度表,维度列,度量列等去完成一个cube的构建,对我这种在数仓搭建方面的小白白来说有很大的指导意义和帮助;
(2)让业务回归业务,让开发者更好的理解业务,这个主要是在构建模型的时候给我的感觉,在创建了几个模型之后我甚至幻想出了产品经理自己动手创建模型,开发者负责底层和后续的cube的优化的场景,多好;
(3)更深刻的理解了空间时间的相互转换。
总体来说作为一个初级的kylin使用者,体验挺棒的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值