Kylin系列-Saiku结合Hive做大数据多维数据分析
来源:互联网 发布:淘宝会员名公开怕吗 编辑:程序博客网 时间:2024/05/21 17:21
前面介绍了将Saiku和Kylin结合起来做OLAP多维分析,Saiku也支持多种其他数据源,如MySQL,JDBC等,本文介绍将Saiku和Hive结合起来使用的方法,并解决期间遇到的问题。
注:Saiku社区版(Saiku CE)的下载地址为:
http://community.meteorite.bi/?cedownload
Saiku与Hive
Saiku最新的社区版本中自带的Hive版本为0.13.1,我使用的Hive版本也为0.13.1,Saiku通过JDBC与HiveServer连接。
启动HiveServer2
注意:启动HiverServer2时候,可以后台运行,并将日志重定向到一个文件中,方便查看:./hiveserver2 >> /tmp/hiveserver.log 2>&1 &
启动Saiku
新建mondrian schema
基于Hive中已有的事实表lxw1234_kylin_fact(该表是之前为kylin创建的,这里直接使用,和表名无关)创建Schema:
vi ad_schema2.xml
这里只取了两个维度,省份和城市,一个指标PV。
将schema文件上传到Saiku。
新建Hive数据源
创建一个名为hive_ds的Hive JDBC数据源。
Hive-JDBC的错误
当进入到Home页,点击创建新查询之后,在多维数据集里面没有刚才新建的数据源hive_ds,查看saiku后台日志,发现以下错误(这里一并列出):
错误1:
该错误是由于Mondrian中使用了hive-jdbc未实现的方法:getIdentifierQuoteString,hive-jdbc-0.13.1.jar源码中该方法为:
错误2:
错误原因同上。
解决的方法,需要修改hive-jdbc-0.13.1.jar中的源码org.apache.hive.jdbc.HiveDatabaseMetaData,将上面的两个方法改为:
注意,要快速修改源码,不要整个编译工程,通常我的做法是引入相关的jar包,这里需要引入hive-jdbc-0.13.1.jar 和 hive-metastore-0.13.1.jar ,然后新建一个package和源文件的package相同:org.apache.hive.jdbc , 再将源码 HiveDatabaseMetaData.java 拷贝到该package下进行修改,修改好后,将该类相关的class文件,替换到 hive-jdbc-0.13.1.jar 中即可。
用新的hive-jdbc-0.13.1.jar 替换Saiku中的jar包,位置在:~/saiku/saiku-server/tomcat/webapps/saiku/WEB-INF/lib下。
重启Saiku Server。
创建查询
重启后,再次进入创建查询页面,后台没有报错,多维数据集下已经有了hive_ds。选择维度和指标后,saiku生成查询语句,并通过JDBC提交查询到Hive。
saiku的日志:
另外,HiveServer2的日志中也有MapReduce运行日志产生。
但通过日志可以看到,这个简单的查询,貌似被分成好几步来执行查询,最后耗时87秒。
Hive查询过程分析
从ResourceManager的页面上看到,一共提交了三个SQL:
第一个SQL为:
作用是从事实表中抽取所有维度并去重排序。
第二个SQL为:
SELECT count(DISTINCT city) FROM lxw1234_kylin_fact
看上去是获取所有city的不重复数。
第三个SQL为:
发现这个SQL才是最终显示结果要用的查询,那么前两个的作用是什么呢?
看下面的操作:
点击省份维度之后,便弹出筛选对话框,里面列出了所有的省份名称,点击城市维度之后也是如此,前两个SQL的用途便在这里,从事实表中提取出所有维度缓存起来,供筛选使用。
另外,Saiku对于Hive的查询结果也会缓存,这样,在做分析查询的时候,能从缓存中获取的数据便不会再从Hive中查询,可以试试,过滤几个省份,获取去掉城市维度,结果立刻就返回,并不是从Hive中查询,这点,使得Saiku+Hive的可行性增强了不少。
接下来就尝试使用Saiku和SparkSQL结合使用,效率应该比Hive好很多。请持续关注 “lxw的大数据田地” .
转自:lxw的大数据田地 » Saiku结合Hive做大数据多维数据分析
- Kylin系列-Saiku结合Hive做大数据多维数据分析
- Kylin系列-使用Saiku+Kylin构建多维分析OLAP平台
- 分布式大数据多维数据分析(olap)引擎kylin
- Kylin系列-分布式大数据多维分析(OLAP)引擎Apache Kylin安装配置及使用示例
- 基于kylin大数据多维分析功能整合
- Saiku+Kylin多维分析平台探索
- Saiku + Kylin 多维分析平台探索
- 【多维分析系列】拥抱大数据多维分析查询
- [大数据]使用hive做数据分析
- 使用Saiku+Kylin构建多维分析OLAP平台
- 使用Saiku+Kylin构建多维分析OLAP平台
- 分布式大数据多维分析(OLAP)引擎Apache Kylin安装配置及使用示例
- 分布式大数据多维分析(OLAP)引擎Apache Kylin安装配置及使用示例
- 分布式大数据多维分析(OLAP)引擎Apache Kylin安装配置及使用示例
- Kylin系列-大数据分析界的“神兽”Apache Kylin有多牛?
- 【多维分析系列】大数据下的数据分析:Hadoop架构解析
- Kylin - 分析数据
- 大数据分析界的“神兽”Apache Kylin初解
- MFC自制进度条
- 测试过程中所关注的HTTP协议详解
- SpringMVC-FAQ(2):java.lang.NoClassDefFoundError: org/springframework/core/env/EnvironmentCapa
- Ubuntu14.04下安装与配置Apache服务器
- CS 400 Seven-egment Display 贪心+模拟,DP
- Kylin系列-Saiku结合Hive做大数据多维数据分析
- Sonar介绍与集成
- SnackBar的使用
- java基础(13)- java的输入/输出(IO)包(3)
- 线程数究竟设多少合理
- jsp
- reactnative 与webview通信(html)
- 职业规划-大数据开发工程师(待完善)
- Masonry学习之aspect fit