Hadoop技术在商业智能BI中的应用

Hadoop是个很流行的分布式计算解决方案,是Apache的一个开源项目名称,核心部分包括HDFS及MapReduce。其中,HDFS是分布式文件系统,MapReduce是分布式计算引擎。时至今日,Hadoop在技术上已经得到验证、认可甚至到了成熟期,同时也衍生出了一个庞大的生态圈,比较知名的包括HBase、Hive、Spark等。HBase是基于HDFS的分布式列式数据库,HIVE是一个基于HBase数据仓库系统。Impala为存储在HDFS和HBase中的数据提供了实时SQL查询功能,基于HIVE服务,并可共享HIVE的元数据。Spark是一个类似MapReduce的并行计算框架,也提供了类似的HIVE的Spark SQL查询接口,Hive是基于hadoop的数据分析工具。

很多企业比如银行流水作业很多,数据都是实时更新且数据量很大。会采用hadoop作为底层数据库,借由中间商处理底层数据,然后通过BI系统去连接这些中间数据处理厂商的中间表,接入处理数据,尤其以星环、华为这类hadoop大数据平台商居多,使用也较为广泛。

这里以星环大数据平台与帆软大数据BI工具FineBI的结合应用来简单介绍下。

由于星环也是处理hadoop下的hive数据库,其本质都是差不多的,可以使用Hive提供的jdbc驱动,这个驱动同样可以让FineBI连接星环的数据库并进行一些类关系型数据库的sql语句查询等操作,部分特殊sql的公式需要与星环人员确认是否可以使用。

首先将这些驱动拷贝到报表工程下面,然后重启BI服务器。重启后可以建立与星环数据库的数据连接,最后通过连接进行数据查询。

1、本地部署

下图是FineBI内部测试用的hadoop的jar包(将以下jar包放置于webinf-lib文件夹下),亲测,可连接成功,如下图所示:

Hadoop技术在商业智能BI中的应用

2、数据连接

数据连接如下图所示:

Hadoop技术在商业智能BI中的应用

测试连接成功之后,点击确定,可直接选择数据库中对应的表加入业务包中,类似于Mysql这些最常见的数据库取表方式。

Hadoop技术在商业智能BI中的应用

3、实际分析案例

某银行的总行层面-机构维度-四象限图

Hadoop技术在商业智能BI中的应用

(2)总行层面-机构维度-趋势分析

Hadoop技术在商业智能BI中的应用

(3)总行层面-产品维度-盈利产品

Hadoop技术在商业智能BI中的应用

4.关于FineBI的FineIndex和FineDirect功能

Hadoop技术在商业智能BI中的应用

hadoop是底层,hive是数据库,上述案例采用的是FineIndex(cube连)连接,用的是hiveserver的方式进行数据连接的;数据连接成功之后,将hive数据库中的表添加到业务包中,也就是将库中数据拿到我们的多维数据库(FineIndex),当然抓取的过程中也可以读取数据库关联和转义,也可以手动转义和进行关联,同时也可以做一些etl操作如新增公式列/行列转换/join/union/过滤/分组统计/自循环列/新增分组列/使用部分字段等,做过处理的这些数据表用于前端分析。

也就是说数据库-FineIndex-前端分析,这里的FineIndex相当于一个中间库的形式,用来存储数据表,关联转义索引等。这些都对后续前台分析处理数据效率有很大的提升(因为直接sql取数,效率受数据库本身的限制,数据量大时,一般分析工具很容易就卡死升职内存溢出导致系统无响应),这也是FineIndex方案的初衷。FineIndex存在有两个意义,一个是提升效率,一个就是对数据进行二次整合处理。

FineBI还有一个连接方式FineDirect(数据库直连),主要是应对如下需求:

  • 分析结果的实时性

企业用户在使用BI工具的时候,多数情况下是对大量的历史数据进行OLAP分析,但是也有部分用户需要展现结果的实时性。例如金融行业对于交易风险的分析,是对每一笔流水实时进行分析的,如果需要经过构建多维数据库的过程,数据到来就会有延迟,影响分析结果的准确性。但是因为计算的过程交给了数据库,响应速度更多的取决于数据库的性能。

  • 大数据平台的充分利用

随着各种分布式计算方案的不断优化,数据的计算性能也有了快速的发展,计算能力有了显著的提高,不少企业已经有了自己的大数据计算平台,例如hadoop,kylin,greenplum,vertica等,这些平台的对于大数据量的处理性能已经足以满足使用需求,不再有建模的需求,因此FineBI直连引擎提供了对接这些数据平台的功能。

上一篇:前端--关于javascript对象


下一篇:Problem creating zip: Execution exce ption (and the archive is probably corrupt but I could not delete it): Java heap space -> [Help 1]