Jaspersoft对接Hive&&PostgreSQL

1    简介

Jaspersoft是一款开源的BI工具,很多企业正在使用JasperReport和JasperServer开发和定制自己的业务分析报表。使用Jaspersoft,企业可以轻易地针对自身数据构建可视化的BI视图。本文就针对如何使用Jaspersoft,对存储在SequoiaDB中的数据分析进行介绍。

由于SequoiaDB并不是传统的关系型数据库,因此对于一些为关系型数据库而设计的BI工具,需要在中间使用一层“连接器”进行对接。通过“连接器”处理BI工具的SQL查询,并将对数据的请求下发至SequoiaDB数据库。使用这种方式,SequoiaDB能够对接多种支持关系型数据库的BI系统,本文主要介绍如何通过连接器对接Jaspersoft与SequoiaDB。

本文介绍了如何通过“SQL连接器”的方式,使Jaspersoft能够从SequoiaDB中读取数据。本文中“SQL连接器”代表“Hive连接器”与“PostgreSQL FDW连接器”,意味着Jaspersoft能够通过使用Hive和PostgreSQL作为中间的SQL语法解析执行层,从SequoiaDB中读取数据并生成相应的分析报表。用户可以将该方法应用于其他不同的数据库工具。

一般来说,对于大型数据仓库建议使用Hadoop Hive作为分析平台,而对于简单的报表系统则可以使用PostgreSQL执行简单SQL的查询。

Jaspersoft通过Hive与PostgreSQL访问SequoiaDB中的数据流程如下图示:

Jaspersoft Studio对接 Hive0.12

2.1准备环境

本章节使用Hive与Jaspersoft Studio进行对接,其中Hive的版本为0.12,Jaspersoft Studio的版本为5.2.0(Jaspersoft Studio 5.5.0版本测试通过)。

Hive的元数据信息存储建议调整为Mysql存储,这样可以保证任意机器,多会话使用相同的Hive元数据信息。

2.1.1Hive对接SequoiaDB

通过Hive使Jaspersoft能够查询SequoiaDB中的数据,第一步首先要配置Hive使其能够访问SequoiaDB中的数据。具体的流程如下:

(1)在Hive根目录下,创建auxlib文件夹,放置扩展sequoiadb.jar、hiev-sequoiadb-apache.jar包:

#>mkdir -p $HIVE_HOME/auxlib;

#>cp -f $SEQUOIADB_HOME/java/sequoiadb.jar $HIVE_HOME/auxlib;

#>cp -f $SEQUOIADB_HOME/hadoop/hive-sequoiadb-apache.jar $HIVE_HOME/auxlib;

(2)登陆Hive的shell控制界面,在Hive中创建SequoiaDB的映射表:

hive>create external table sdb_tab(id) stored by "com.sequoiadb.hive.SdbHiveStorageHandler"tblproperties("sdb.address" = "localhost:11810");

(3)登陆SequoiaDB的shell控制界面,查看是否成功创建了名为“default”的collection space和名为“sdb_test”的collection,如果成功,给default.sdb_test写入若干记录:

sdb>db = new Sdb("localhost",11810);

sdb>db.listCollections();

sdb>db.default.sdb_test.insert({"name":"chen","id":123});

sdb>db.default.sdb_test.insert({"name":"go","id":456});

sdb>db.default.sdb_test.insert({"name":"hahah",id:80980});

(4)分别从SequoiaDB shell和Hive shell 中查询记录,测试Hive是否成功从SequoiaDB获取数据:

sdb>db.default.sdb_test.find();

hive>select * from sdb_test;

<img width="276.67" height="64.40" src="http://www.sequoiadb.com/images/whitepaper/whitepaper_6/%E5%9B%BE%E7%89%874.png" <="" p="" style="vertical-align: middle; border: 0px;">

2.1.2    启动Hiveserver服务

启动Hive的server服务,默认启动端口为10000:

#>bin/hive --service hiveserver

启动成功,屏幕打印“Starting Hive Thrift Server”:

至此,Hive与SequoiaDB对接成功,并成功启动Hive服务。


2.2Jasersoft Studio使用

2.2.1启动Jaspersoft Studio

双击Jaspersoft软件,进入Jaspersoft Studio界面:

2.2.2创建新Project

(1)点击File -> New -> Project:

(2)选择Jaspersoft Studio -> JapserReports Project,点击Next:

(3)在Name输入框中输入Project的名字,例子填写了“hive”,填写完毕后,点击Finish,完成Project创建:

2.2.3    创建新的Hive连接

(1)点击下图红色圆圈的按钮:

(2)选择Hive Connection的连接,点击Next:

(3)在Name输入框中输入新建的连接名,例子填写“hive”,URL输入框中填写Hive JDBC连接地址,连接的IP地址为“192.168.20.186”,端口为“10000”,使用数据库为“default”,信息都填写完毕后,点击Text按钮,测试是否填写正确。

(4)如果连接功能,则如下图示,点击OK按钮,并且点击Finish按钮,完成创建新数据库连接。

2.2.4    创建Report

(1)点击File -> New -> Jasper Report。

(2)点击Categories栏的All,选择右边栏的Blank A4模板,点击Next。

(3)Report文件选择创建在哪个Project上,例子里选择hive Project,File name输入栏填写Report的file name,例子里填写了hive_sdb.jrxml,点击Next。

(4)Data Adapter为Report的数据库连接源,选择刚才创建的hive连接,在Insert a HiveQL query and press Next输入栏里填写你要做的sql语句。这里特别提醒,sql语句不要以“;”结尾,否则语法不通过,sql填写完毕后,点击Next。

(5)通过前面的sql语句,Jasper检测到我们将要输出的字段名,点击图中红色圆圈的按钮,将字段转移到未来Report输出Fields列表中,点击Next完成此步骤。

(6)当Jasper出现下图时,新Report文件就设置好了,点击Finish。

2.2.5    Report打印输出

(1)从左边的Outline栏的Fields中,将name、id字段直接拖动到右边的显示输出的Detail上。

(2)将要输出的字段都放置在Detail框中。

(3)点击下方的Preview按钮,Jasper会自动运行刚才的sql语句并且按照你上一步骤设计的输出格式进行输出。

3Jaspersoft Studio对接PostgreSQL 9.3.4

3.1简介

第二章中介绍了如何使用Hive与Jaspersoft Studio对接,从SequoiaDB中读取数据。本章则介绍如何通过PostgreSQL的连接器与SequoiaDB相连,使用Jaspersoft Studio通过PG访问存放于SequoiaDB中的数据。

3.2PostgreSQL环境准备

3.2.1安装PostgreSQL

由于PostgreSQL不能在root用户下使用,并且本教程为PostgreSQL从SequoiaDB中获取数据进行查询,所以作者建议以sdbadmin用户(SequoiaDB数据库默认用户)对PostgreSQL进行安装。

以sdbadmin用户解压PostgreSQL的安装包,后面步骤如果没有特别指明,则默认使用sdbadmin用户进行操作

#>tar -zxvf pgsql.tar.gz ~/;

#>cd $SDBADMIN_HOME/pgsql;

3.2.2    配置PostgreSQL并启动服务

(1)环境变量添加PostgreSQL的lib库

#>export LD_LIBRARY_PATH=$(pwd)/lib:${LD_LIBRARY_PATH};

(2)创建PostgreSQL的数据目录,并且初始化数据目录(该操作只能操作一次)

#>mkdir pg_data    ;

#>bin/initdb -D pg_data/ ;

(3)调整PostgreSQL的范文权限

使用Jasper访问PostgreSQL,需要将PostgreSQL调整为允许任何机器对PostgreSQL进行访问。

方法是修改PostgreSQL的数据库配置文件pg_hba.conf。

pg_hba.conf配置文件默认只允许本地访问PostgreSQL,配置文件为:

# IPv4 local connections:

host    all             all             127.0.0.1/32            trust

对pg_hba.conf文件新型修改,增加受信任的机器列表,例子中修改为允许所有机器访问PostgreSQL。

修改后的pg_hba.conf文件

# IPv4 local connections:

host    all             all             127.0.0.1/32            trust

host    all             all             0.0.0.0/0               trust

(4)启动Postgresql服务进程

#>bin/postgres -D pg_data/ >> logfile 2>&1 &

(5)创建PostgreSQL的database

#>bin/createdb -p 5432 sdb

(6)安装PostgreSQL扩展包,允许PostgreSQL从SequoiaDB获取数据进行SQL查询

#>mkdir -p $SDBADMIN_HOME/pgsql/lib;

#>mkdir -p $SDBADMIN_HOME/pgsql/share/extension;

#>cp -f sdb_fdw.so $SDBADMIN_HOME/pgsql/lib;

#>cp -f sdb_fdw.control $SDBADMIN_HOME/pgsql/share/extension;

#>cp -f sdb_fdw--1.0.sql $SDBADMIN_HOME/pgsql/share/extension;

(7)登陆PostgreSQL的shell控制界面进行操作

#>bin/psql  -p 5432 sdb

3.2.3    创建SequoiaDB映射

(1)加载SequoiaDB连接驱动

sdb=# create extension sdb_fdw;

(2)配置与SequoiaDB连接参数

sdb=# create server sdb_server foreign data wrapper sdb_fdw options(address 'localhost', service '11810');

(3)关联SequoiaDB的集合空间与集合

sdb=# create foreign table test (name text, id numeric) server sdb_server options ( collectionspace 'default', collection 'sdb_test' ) ;

(4)执行查询命令,查看PostgreSQL是否能成功从SequoiaDB获取数据进行查询

sdb=# select * from test;

3.3    Jasper使用

3.3.1    创建Project

创建一个名为postgresql的Project,具体操作参考2.2.2

3.3.2    新建PostgreSQL的数据库连接

(1)点击红色圆圈的按钮,新建一个数据库连接

(2)选择Database JDBC Connection,点击Next

(3)Name输入框填写新建数据库连接名字,例子中填写postgresql,JDBC Driver选择框中选择PostgreSQL(org.postgresql.Driver)

(4)正确填写JDBC URL输入框,例子中连接的服务器IP地址为“192.168.20.186”,端口为“5432”,连接的数据库为“sdb”。

Username输入框中填写PostgreSQL运行的用户名,例子中填写“sdbadmin”。

填写完毕后,点击Test,测试Jasper是否能连接远程的PostgreSQL服务。

(5)测试成功,出现如下对话框,点击OK按钮后,点击Finish,完成创建新的PostgreSQL连接

3.3.3    创建Report

使用PostgreSQL作为远程数据库,创建Report步骤参考2.2.4,只需要在选择数据库连接源时选择postgresql即可。

3.3.4    Jasper输出

使用PostgreSQL作为远程数据库服务器,Jasper按照格式进行输出,操作步骤参考2.2.5


4    结论

SequoiaDB作为一款优秀的分布式数据库,在不断优化自身的性能同时,也非常关注如何与传统的BI工具进行整合,使得企业的数据有说话的平台,有良好的展现效果。

通过对Hive和PostgreSQL进行功能扩展,使得两者都成为SequoiaDB的SQL语法解析执行层,一般来说,对于大型数据仓库建议使用Hadoop Hive作为分析平台,而对于简单的报表系统则可以使用PostgreSQL执行简单SQL的查询。

通过前面的各个章节,作者已经清楚地向用户展示了如何使用Jaspersoft工具,使用Hive和PostgreSQL的JDBC驱动,对SequoiaDB的数据进行查询与效果呈现。

你可能感兴趣的:(hive,BI,jaspersoft,nosql数据库,SequoiaDB)