Board logo

标题: IBM Cognos 11 连接 Hadoop 的最佳实践-2 [打印本页]

作者: look_w    时间: 2018-2-21 14:20     标题: IBM Cognos 11 连接 Hadoop 的最佳实践-2

IBM                Cognos 11 对 Hadoop 的支持在 Cognos 11 最新的功能里,也强化了对于 Hadoop 的支持,首先,Hive 是一个驻留在 Hadoop 之上的数据仓库系统,Hive                提供了数据提取,转换和导入(ETL)工具,它可以添加结构到甚至是基于文本的数据源中,并且能够嵌入大量数据分析到 Hadoop 的分布式文件系统                Hadoop Distributed File System(HDFS)中。
Cognos 商业智能系统能生成 Hive QL 去调用查询 BigInsights 文件系统,Cognos 商业智能服务器通过                BigInsights 配置 Hive JDBC 驱动程序连接到 BigInsights。Hive 目录的元数据可以导入进 Cognos                Framework Manager,并作为商业智能的元数据建模发布包含 BigInsights 内容包到 Cognos                的商业智能服务器中。这些包可以用于创建 Cognos 报表(包括 Cognos 互动报表),仪表盘,以及 WorkSpaces,同时驱动                BigInsights 的里的 Map/reduce 的能力。
图 1.Cognos 与 Hadoop 的连接架构图
IBM                Cognos 11 成功配置 Hadoop 的最佳实践首先,Cognos 11 支持的数据源,我们可以在 Cognos 官方的得到,Cognos 最新版本的数据支持可以在产品生命周期支持找到:!
支持的软件版本最小要求 Apache Hive  0.13.0 and future fix packs  0.13.0
0.14.0 and future fix packs  0.14.0
1.1 and future fix packs  1.1
1.2 and future fix packs  1.2
2.1 and future fix packs  2.1
当使用不同版本的驱动 0.12.0,0.14.0,1.2 测试 Apache Hive 1.2 数据库连接的时候,第一次会遇到如下的报错:
清单 1. 报错
1
2
3
XQE-DS-0006 Unable to logon to the data source.
com.ibm.cognos.jdbc.adaptor.sqlexception.SQLCognosInvalidLogonException: The connection object was not initialized properly.
Caught error in V5QueryHandler: java.lang.NoClassDefFoundError: org.apache.http.config.Lookup




在进一步在 XQE 日志里分析,我们可以看到:
清单 2. 日志分析
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
![CDATA[Connection failed: com.ibm.cognos.jdbc.adaptor.sqlexception.SQLCognosInvalidLogonException: The connection object was not initialized properly.]]
![CDATA[Caught error in V5QueryHandler: XQE-DS-0006 Unable to logon to the data source.
at com.cognos.xqe.data.providers.relational.jdbc.JDBCConnection.mapConnectionException(JDBCConnection.java:1497)
at com.cognos.xqe.data.providers.relational.jdbc.JDBCConnection.driverConnect(JDBCConnection.java:872)
at com.cognos.xqe.data.providers.relational.jdbc.JDBCConnection.driverConnectKerberos(JDBCConnection.java:2745)
at com.cognos.xqe.data.providers.relational.jdbc.JDBCConnection.connect(JDBCConnection.java:986)
at com.cognos.xqe.data.providers.relational.jdbc.JDBCConnectionFactory.createConnection(JDBCConnectionFactory.java:122)
at com.cognos.xqe.data.providers.relational.jdbc.JDBCDataProvider.testConnection(JDBCDataProvider.java:153)
at com.cognos.xqe.data.providers.relational.TraceRelationalDataProvider.testConnection(TraceRelationalDataProvider.java:222)
at com.cognos.xqebifw.bibushandler.ConnectionTester.doTestConnection(ConnectionTester.java:319)
at com.cognos.xqebifw.bibushandler.ConnectionTester.testDataSourceConnection(ConnectionTester.java:162)
at com.cognos.xqebifw.bibushandler.TestDataSourceConnectionWithInfoRequestAdapter.executeRequest(TestDataSourceConnectionWithInfoRequestAdapter.java:93)
at com.cognos.xqebifw.cubingservices.V5QueryHandler.executeRequestInSequence(V5QueryHandler.java:729)
at com.cognos.xqebifw.cubingservices.V5QueryHandler.execute(V5QueryHandler.java:548)
at com.cognos.xqebifw.cubingservices.RequestWorker.processMessage(RequestWorker.java:300)
at com.cognos.xqebifw.cubingservices.RequestWorker.processQueryInputMsg(RequestWorker.java:277)
at com.cognos.xqebifw.cubingservices.RequestWorker.call(RequestWorker.java:146)
at com.cognos.xqebifw.cubingservices.RequestWorker.call(RequestWorker.java:53)
at java.util.concurrent.FutureTask.run(FutureTask.java:277)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1153)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.lang.Thread.run(Thread.java:785)

![CDATA[V5QueryHandler returning SOAP Fault for request type "testDataSourceConnectionWithInfo"]]
XQE-GEN-0002 An unexpected exception occurred.

XQE-GEN-0002 An unexpected exception occurred: org.apache.http.config.Lookup




这是由于不正确的驱动导致的连接错误,因此,我们需要从 Hive/Hadoop 去下载驱动,并且 Copy 进 Cognos Analytics 11                安装的驱动目录路径,Cognos 11.0.4 连接 hive 的配置过程,目前只在 hive 1.2.1 版本上测试连接成功。
Hadoop 是个很流行的分布式计算解决方案,Hive 是基于 hadoop 的数据分析工具。一般来说我们对 Hive 的操作都是通过 cli                来进行,也就是 Linux                的控制台,但是,这样做本质上是每个连接都存放一个元数据,各个之间都不相同,这样的模式用来做一些测试比较合适,并不适合做产品的开发和应用。因此,就产生                Hive 的 JDBC 连接的方式。使得我们可以连接 Hive 并进行一些类关系型数据库的 sql                语句查询等操作,首先我们需要将这些驱动拷贝到报表工程下面,然后再建立连接,最后通过连接进行数据查询。
在安装之前,我们需要先进行驱动文件的添加,下面是成功安装需要的文件包:





欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0