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中的数据流程如下图示:
本章节使用Hive与Jaspersoft Studio进行对接,其中Hive的版本为0.12,Jaspersoft Studio的版本为5.2.0(Jaspersoft Studio 5.5.0版本测试通过)。
Hive的元数据信息存储建议调整为Mysql存储,这样可以保证任意机器,多会话使用相同的Hive元数据信息。
通过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;">
启动Hive的server服务,默认启动端口为10000:
#>bin/hive --service hiveserver
启动成功,屏幕打印“Starting Hive Thrift Server”:
至此,Hive与SequoiaDB对接成功,并成功启动Hive服务。
双击Jaspersoft软件,进入Jaspersoft Studio界面:
(1)点击File -> New -> Project:
(2)选择Jaspersoft Studio -> JapserReports Project,点击Next:
(3)在Name输入框中输入Project的名字,例子填写了“hive”,填写完毕后,点击Finish,完成Project创建:
(1)点击下图红色圆圈的按钮:
(2)选择Hive Connection的连接,点击Next:
(3)在Name输入框中输入新建的连接名,例子填写“hive”,URL输入框中填写Hive JDBC连接地址,连接的IP地址为“192.168.20.186”,端口为“10000”,使用数据库为“default”,信息都填写完毕后,点击Text按钮,测试是否填写正确。
(4)如果连接功能,则如下图示,点击OK按钮,并且点击Finish按钮,完成创建新数据库连接。
(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。
(1)从左边的Outline栏的Fields中,将name、id字段直接拖动到右边的显示输出的Detail上。
(2)将要输出的字段都放置在Detail框中。
(3)点击下方的Preview按钮,Jasper会自动运行刚才的sql语句并且按照你上一步骤设计的输出格式进行输出。
第二章中介绍了如何使用Hive与Jaspersoft Studio对接,从SequoiaDB中读取数据。本章则介绍如何通过PostgreSQL的连接器与SequoiaDB相连,使用Jaspersoft Studio通过PG访问存放于SequoiaDB中的数据。
由于PostgreSQL不能在root用户下使用,并且本教程为PostgreSQL从SequoiaDB中获取数据进行查询,所以作者建议以sdbadmin用户(SequoiaDB数据库默认用户)对PostgreSQL进行安装。
以sdbadmin用户解压PostgreSQL的安装包,后面步骤如果没有特别指明,则默认使用sdbadmin用户进行操作
#>tar -zxvf pgsql.tar.gz ~/;
#>cd $SDBADMIN_HOME/pgsql;
(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
(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;
创建一个名为postgresql的Project,具体操作参考2.2.2
(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连接
使用PostgreSQL作为远程数据库,创建Report步骤参考2.2.4,只需要在选择数据库连接源时选择postgresql即可。
使用PostgreSQL作为远程数据库服务器,Jasper按照格式进行输出,操作步骤参考2.2.5。
SequoiaDB作为一款优秀的分布式数据库,在不断优化自身的性能同时,也非常关注如何与传统的BI工具进行整合,使得企业的数据有说话的平台,有良好的展现效果。
通过对Hive和PostgreSQL进行功能扩展,使得两者都成为SequoiaDB的SQL语法解析执行层,一般来说,对于大型数据仓库建议使用Hadoop Hive作为分析平台,而对于简单的报表系统则可以使用PostgreSQL执行简单SQL的查询。
通过前面的各个章节,作者已经清楚地向用户展示了如何使用Jaspersoft工具,使用Hive和PostgreSQL的JDBC驱动,对SequoiaDB的数据进行查询与效果呈现。