背景

为了应对各种数据需求,通常,我们的做法是这样的:

  1. 对于临时性的数据需求:写HQL到Hive里去查一遍,然后将结果转为excel发送给需求人员。
  2. 对于周期性的、长期性的数据需求:编写脚本,结合Hive跑出结果,将结果写入对应DB库,然后开发前端页面对结果进行展现。

这样做简洁明了,但是,有很明显的问题:

  1. 开发成本太高。每来一个需求,不管是临时需求还是长期需求,都需要进行定制开发,这种情况下,我们的人力深陷其中。
  2. 使用不灵活。一个报表,只能进行展示,没有分析功能,如果要进行分析,需要将数据复制到excel里,利用excel进行处理分析,而我们的数据使用人员不一定具备这种能力。
  3. 维护成本高。太多人开发报表,没有统一口径,没有详细文档,没有人能接手。
  4. 资源浪费。不同人员开发的报表,很多情况下存在很多重复计算。

在这种情况下,开始考虑构建一个多维分析平台,提供平台和基础数据,数据需求方通过托拉拽的形式获取需要的数据。本文主要记录这方面的一些探索。

Saiku

首先,选择使用 Saiku 作为我们的数据分析平台,下面是 Saiku 官网对 Saiku 的介绍:

Saiku allows business users to explore complex data sources, using a familiar drag and drop interface and easy to understand business terminology, all within a browser. Select the data you are interested in, look at it from different perspectives, drill into the detail. Once you have your answer, save your results, share them, export them to Excel or PDF, all straight from the browser.

Saiku 是基于 Mondrian 开发的,Mondrian 是一款开源的 OLAP 引擎,能提供对大量数据的处理分析,但是,Mondrian 并没有提供友好的界面,而Saiku作为另一个开源产品,很好的充当了这个角色。

Saiku 提供JDBC 和 ODBC 接口,可以连接很多的数据源,既可以连接 MySQL、SQL Server、Oracle DB 等传统关系型数据库,也可以连接 Hive、Spark、Impala等 Big Data 平台。

Saiku + MySQL

首先,我们用 Saiku+MySQL很快搭建了测试平台,可以实现基本的多维分析,但是,仅适用于小数据量的分析,否则会有很严重的性能问题。

Saiku + Spark

由于 Saiku+MySQL 的性能问题,又尝试了 Saiku+Spark 的方案,数据存储于 Hive,分析引擎使用 Spark,在这种情况下,可以处理大数据量的查询分析,大部分查询都会在几十秒到几分钟内返回结果,如果数据量太大,也会存在执行失败的情况。所以,开始探索其他方案。

Kylin

Apache Kylin™ is an open source Distributed Analytics Engine designed to provide SQL interface and multi-dimensional analysis (OLAP) on Hadoop supporting extremely large datasets, original contributed from eBay Inc.

Kylin 相对于其他OLAP分析引擎,一个重要特点是采用空间换时间,根据定义的cube进行预计算,并将计算结果存储到Hbase中,在进行查询时,直接查询Hbase,所以,Kylin 的查询可以到毫秒级,性能完全不是问题。

Kylin 提供 ANSI SQL 接口来对数据进行查询,没有可视化操作,所以,有一定的使用门槛。同时,由于Kylin 提供的 ANSI SQL接口,Kylin 也就可以和BI平台进行对接,比如,Kylin 已经支持 Tableau 等BI工具,奈何 Tableau 是商业软件,so…

Saiku + Kylin 实现多维分析  https://github.com/mustangore/kylin-mondrian-interaction

Saiku 根据用户在页面的操作,生成 MDX,然后,Mondrian根据MDX生成查询语句SQL,而 Kylin 可以根据SQL 查询 cube,快速得到结果,所以,如果 Saiku 和 Kylin 中定义了相同的 cube,那么,就可以通过Saiku 来查询 Kylin了,从而将 Saiku 的操作页面和 Kylin 的高性能查询能力结合起来。

Google 一下,Github 已经有人这么做了,按照该项目说明就可以轻松搭建 Saiku+Kylin 多维分析平台。

Saiku+Kylin 的分析平台能实现的分析能力,很大程度取决于 Kylin 支持的 SQL 和 Mondrian 生成的 SQL的共通点,经过测试,Kylin 能对绝大多数 SQL 提供友好支持,可以和 Saiku 进行完美结合。

总结

Saiku 作为分析平台,提供可视化的操作,能方便的对数据进行查询、分析,并提供图形化显示,但是,Saiku 有一定的使用门槛,特别是对国内的使用者来说,所以,可能需要一些定制开发。

Kylin 作为分析引擎,根据空间换时间的思想,对数据进行预计算,从而提供极高的查询性能,并且提供 ANSI SQL 接口,可以极大程度满足日常查询需求。但是,Kylin 对 Hadoop 生态版本有较高的要求,所以,尽量按照官方推荐版本安装配置。

PS:本文采用 Saiku 3.7.4 和 Kylin 1.2。

Saiku + Kylin 多维分析平台探索的更多相关文章

  1. 【转】Kylin系列-使用Saiku+Kylin构建多维分析OLAP平台

    关于Kylin的介绍和使用请参考之前的文章 <分布式大数据多维分析(OLAP)引擎Apache Kylin安装配置及使用示例> Kylin对外提供的是SQL查询接口,基于Kylin构建OL ...

  2. Saiku_学习_03_Saiku+Kylin构建多维分析OLAP平台

    一.技术选型 参见:Saiku+Kylin多维分析平台探索 1.saiku Saiku 作为分析平台,提供可视化的操作,能方便的对数据进行查询.分析,并提供图形化显示 2.kylin Kylin 作为 ...

  3. Saiku资源帖

    一.精选 1.李秋 随笔分类 - pentaho 二.概述 1.Saiku + Kylin 多维分析平台探索 三.Saiku+Kylin 1.使用Saiku+Kylin构建多维分析OLAP平台 2.使 ...

  4. Saiku_00_资源帖

    一.精选 1.李秋 随笔分类 - pentaho 二.概述 1.Saiku + Kylin 多维分析平台探索 三.Saiku+Kylin 1.使用Saiku+Kylin构建多维分析OLAP平台 2.使 ...

  5. Apache Kylin学习资料

    官方文档: http://kylin.apache.org/cn/docs/tutorial/web.html kylin对接hive实现实时查询:https://www.cnblogs.com/65 ...

  6. druid与知乎平台

    背景 知乎作为知名中文知识内容平台,业务增长和产品迭代速度很快,如何满足业务快速扩张中的灵活分析需求,是知乎数据平台组要面临的一大挑战. 知乎数据平台团队基于开源的 Druid 打造的业务自助式的数据 ...

  7. 大数据下的数据分析平台架构zz

    转自http://www.cnblogs.com/end/archive/2012/02/05/2339152.html 随着互联网.移动互联网和物联网的发展,谁也无法否认,我们已经切实地迎来了一个海 ...

  8. 国外物联网平台(2):微软Azure IoT

    国外物联网平台(2)——微软Azure IoT 马智 平台定位 连接设备.其它 M2M 资产和人员,以便在业务和操作中更好地利用数据. 连接 IoT 设备 将所有设备连接到云,从这些设备接收大规模数据 ...

  9. 国外物联网平台初探(二) ——微软Azure IoT

    平台定位 连接设备.其它 M2M 资产和人员,以便在业务和操作中更好地利用数据. 连接 IoT 设备 将所有设备连接到云,从这些设备接收大规模数据,以及管理这些设备的授权和限制. 在将设备连接到云和处 ...

随机推荐

  1. JavaScript 学习笔记-HTML&&DOM

    HTML DOM (文档对象模型) 当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model). HTML DOM 模型被构造为对象的树. JavaScript 能够 ...

  2. es中filter和query的对比

    1.filter与query示例PUT /company/employee/2{ "address": { "country": "china&quo ...

  3. 1-4-bootloader架构学习

    1-4-bootloader架构学习 1.一般情况下嵌入式 Linux 系统中的软件主要分为以下几部分: 1) 引导加载程序:其中包括内部 ROM 中的固化启动代码和 BootLoader 两部分. ...

  4. OC通讯录选择封装

    ContactsService.h代码 #import <Foundation/Foundation.h> #import <UIKit/UIKit.h> //block返回选 ...

  5. Tensorflow安装记录

    一.安装Ubantu环境 下载ios 网址:http://cn.ubuntu.com/download/ 2.配合虚拟机进行安装环境 虚拟机直接百度下载即可 虚拟机采用 具体安装,虚拟机百度中很多记录 ...

  6. linux相关介绍

    1.linux的简介 (1)linux是一个开源.免费的操作系统,其稳定性.安全性.处理多并发(基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU) 的操作系统.linux是一个Unix类 ...

  7. 向数据库中添加数据,通过se16 不能添加,通过 代码可以添加的原因

    1:  在向数据库中添加数据时,通过客户端se16 准备对 数据表进行添加数据,提示如下: 找了以下原因,如下: https://www.baidu.com/link?url=3yRtAfY1_9XG ...

  8. [django]session设置与获取原理

    admin登录 情况1: 登录后会产生一个sessionid 情况2: 自定义设置了key后,会多一个sessionid, 登录后会替换为登录后的sessionid的key值 if username ...

  9. Python Socket通信黏包问题分析及解决方法

    参考:http://www.cnblogs.com/Eva-J/articles/8244551.html#_label5 1.黏包的表现(以客户端远程操作服务端命令为例) 注:只有在TCP协议通信的 ...

  10. 【Python】-NO.98.Note.3.Python -【Python3 解释器、运算符】

    1.0.0 Summary Tittle:[Python]-NO.98.Note.3.Python -[Python3 解释器] Style:Python Series:Python Since:20 ...