kylin新手爬坑体验

📅 发布时间:2026/7/28 17:29:54
kylin新手爬坑体验 之前一直在做一些基于sparkhive统计分析相关的开发工作大体流程是通过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使用者体验挺棒的。