InfoSphere BigInsights 上的 Cognos Business Intelligence 10.2 报告功能

了解如何通过 IBM®Cognos®Business Intelligence 10.2 使用 IBM®InfoSphere BigInsights 数据。

Jason Tavoularis, 产品经理, IBM

作者 Jason Tavoularis 的照片Jason 在过去几年中一直与 IBM Cognos 的客户打交道,负责过客户支持、展示、实现和产品管理。Jason 目前是一名产品经理,主要关注 IBM Cognos Business Intelligence 数据访问。



2013 年 1 月 05 日

概述

适用性、除外责任和免责条款

本文提及的 IBM Cognos Business Intelligence 均指的是版本 10.2.0。本文提及的 IBM InfoSphere BigInsights 均指的是版本 1.4。本文中介绍的技巧和产品特征对未来版本可能并不适用。

大数据开辟了业务分析的新时代。组织现在都有机会基于相关数据制定明智的决策,在过去,这些数据因为数量、周转速度和多样性等原因而不能使用。

IBM 是惟一一家提供了从大数据中得出可行的见解所需的全部技术和服务的公司。通过与 IBM InfoSphere BigInsights 进行互操作,IBM Cognos Business Intelligence 现在可以轻松访问到非结构化的源数据,使业务分析人员能够获得从大量文本中得到的关键结论。

本文提供了通过 Cognos Business Intelligence 使用 InfoSphere BigInsights 数据的指导。

Cognos Business Intelligence 10.2 与 InfoSphere BigInsights 1.4 的集成

Hive 是位于 Hadoop 之上的一个数据仓库系统。Hive 提供了提取、转换和加载 (Extract Transformation Load, ETL) 工具,甚至可向基于文本的源数据添加结构,使得分析存储在 Hadoop Distributed File System (HDFS) 中的大量数据成为可能。

Cognos Business Intelligence 生成了 Hive QL 来查询 BigInsights 文件系统。如 图 1所示,Cognos Business Intelligence 服务器通过 BigInsights Hive JDBC 驱动程序连接到 BigInsights。来自 Hive Catalog 的元数据可以导入到 Cognos Framework Manager 中,这就使得商业智能建模器能够将 BigInsights 内容包发布到 Cognos Business Intelligence 服务器。这些内容包可用来创建令人瞩目的 Cognos 报告(包含 Active Report)、仪表板和工作空间,所有这些都利用了 BigInsights 的 Map/Reduce 功能。

图 1. 高层架构
高层架构

建立数据源连接

让 Hive JDBC 文件可用于 IBM Cognos Business Intelligence 服务器

所需的 JDBC 文件可通过 BigInsights 服务器上公开的 URL 下载得到。请注意,BigInsights 要求 Hive JDBC 驱动程序的版本与它将要连接到的服务器本身自带的版本相同。

过程

  1. 在 BigInsights web 界面中,找到 Quick Links 区域中的 Enable your Eclipse development environment for BigInsights application development选项,如 图 2所示。这将会启动一个弹出窗口,上面有一个链接,可用来下载一个较大的 ZIP 文件,名为 BigInsightsEclipseTools.zip。
    图 2. BigInsights Eclipse Tools 下载的 Quick Links 选项
    BigInsights Eclipse Tools 下载的 Quick Links 选项
  2. 解压缩 BigInsightsEclipseTools.zip 文件,然后再解压缩可在 \plugins目录中找到的 com.ibm.biginsights.hive.lib_1.1.0.v20120518_1947 和 com.ibm.hadoop_1.0.0.v20120605_0341 JAR 文件,如 图 3所示。
    图 3. BigInsights Eclipse 工具
    BigInsights Eclipse 工具
  3. 将以下 Hive 和 Hadoop JAR 文件复制到将要连接到 BigInsights 服务器的每个 Cognos 安装的 <c10_location>\webapps\p2pd\WEB-INF\lib文件夹:
    • hive-exec-0.8.0.jar
    • hive-metastore-0.8.0.jar
    • libthrift.jar
    • hive-jdbc-0.8.0.jar
    • libfb303.jar
    • hive-service-0.8.0.jar
    • hadoop-core-1.0.0.jar
    图 4. BigInsights Hive JDBC JAR 文件
    BigInsights Hive JDBC jar 文件
  4. 停止并重启 Cognos 服务。

定义 Cognos Administration 内数据源连接

在使得 Hive JDBC 文件可用于 Cognos Business Intelligence 服务器之后,必须在 IBM Cognos Administration 中创建一个新的数据源。

过程

  1. 要在 IBM Cognos Administration 的 Data Source Administration 区域中创建一个新的数据源,请选择 connection Type 字段中的 JDBC,然后单击 Next
  2. 选择 Type 字段中的 IBM InfoSphere BigInsights (Hive)条目,如 图 5所示。
    图 5. JDBC 连接字符串屏上的 InfoSphere BigInsights 条目
    JDBC 连接字符串屏上的 InfoSphere BigInsights 条目
  3. 采用 //<host>:<port>/<dbname>格式将 BigInsights 服务器 URI 输入到 JDBC URL 字段中,比如 //localhost:10000/default
  4. InfoSphere BigInsights V1.4 自带的 Hive Version 0.8.0 不支持身份验证,因而在 Cognos Administration 中定义连接时,应该输入一个虚拟用户名和密码,如 图 6所示。
    图 6. 虚拟用户名 ID 和密码
    虚拟用户名 ID 和密码
  5. 在屏幕的底部,单击 Next进入指定连接命令块的步骤,如 图 7所示。连接命令块是 Cognos Business Intelligence 服务器用来向 BigInsights 发送额外上下文的机制。(参见 清单 1,获得相关的 XML 命令块。)
    图 7. 打开会话命令块的示例
    打开会话命令块的示例
    清单 1. XML 数据库会话命令块
     <commandBlock> 
      <commands> 
        <sqlCommand> 
         <sql>set hive.auto.convert.join = true</sql> 
        </sqlCommand>   
      </commands> 
     </commandBlock>

元数据建模

Cognos Framework Manager 用户手册中给出的标准指导方针适合为来自 BigInsights 的 Hive Catalog 的元数据进行建模,但应该注意的是,BigInsights V1.4 中的 Hive 不支持某些 SQL 概念,比如主外键定义和非对等连接。在 Hive Catalog 的元数据导入和数据源查询对象的建立完成之后,必须定义关系和决定因素。

请注意,Hive 提供了一种 MapJoin 优化,借助该优化,当连接一个小表与一个很大的表时,小表的数据存储在 Mapper 中,而与连接有关的处理会在 Map 阶段单独进行。通过避免 Reduce 阶段的文件排序和合并,MapJoins 极大地提升了查询性能。Hive 可以基于每个表的行数和大小将一个连接操作自动转变为一个 MapJoin。该操作可以通过标志 hive.auto.convert.join= true来控制,在 Cognos Administration(参见 图 7)中定义数据源连接时,可以将此标志设置为一个打开会话命令块。此外,您还可以找到控制初始化某个在线记录的 MapJoin 所需阈值的其他设置。


时间戳

由于 Hive Version 0.8.0 的一个众所周知的问题,您需要避免对 Cognos Business Intelligence 使用 Hive timestamp 列。在导入到 Cognos Framework Manager 之前,应该敬爱那个这些列声明为 String。在 Cognos Framework Manager 或 某 个 Cognos Business Intelligence 编写界面中,可以将 String 列转换回时间戳,宠儿允许在 Cognos Business Intelligence 服务器上本地执行所有日期 / 时间操作,比如,您可以在 Cognos Framework Manager 的一个数据源查询对象中输入一个类似 Select cast(c1 as timestamp) From T1的语句。


大数据报告的性能考虑事项

总而言之,在使得 BigInsights 数据可用之前,应该认真考虑 Cognos Business Intelligence 在撰写报告和交互分析方面的所有最佳实践。这一节将从大数据的特征出发,重点介绍其中的几个重要考虑事项。

为了确保 Cognos Business Intelligence 服务器只检索所需的记录,可以使用基于提示的过滤程序。BigInsights 可能会存储大量的数据;因此过滤是确保报告处理时间可以被接受的最重要机制。请注意,提示值和其他数据容器可以从之前捕获的、存储在 Cognos 查询服务的内存缓存中的结果集中受益。

与处理很多 轻量的查询相比,Hive 的架构更适合于大规模的查询处理,这是因为一个查询的设置时间 要比大多数流行的 RDBMS 明显高出很多。因此,在不是绝对需要特别分析时候,应该考虑对预先撰写的报告进行调度安排。Cognos Business Intelligence 查询服务的缓存管理系统中可以有助于批量调度报告,它能最小化从 BigInsights 获取的数据量并极大减少报告执行时间。

如果需要大量数据的交互性,可以考虑通过调度 Cognos Active Reports 是否能满足分析要求。如果需要特别分析,可以培训业务用户如何通过一个拖放动作来执行多个操作。(Modelers 应该考虑向此包内添加独立的过滤程序和计算以便能够避免用来定义过滤程序 / 计算的多单击操作。)


分区

Hive 提供了基于被分区了的列的值将表组织成分区的功能。分区的正确使用可以极大改善性能,特别是当用户只是对某个特别的数据子集感兴趣的时候。

比如,考虑使用一个具有 2001 年至 2012 年交易数据的样例表 table1。类似 select product, sum(sales amount)from table1 where year = 2001这样缺少被分区字段的查询将会扫描来自 table1 的全部数据。如果此表是根据 year 列进行分区的,那么针对 2001 年的数据就会放在一起,并且同一个查询将只处理对应于 2001 年的这个分区,从而最大程度地减少了查询的负荷。在对比了被分区的列与没有被分区的列之后,返回提示值和其他类似的结果的速度就会明显快很多。

请注意,也可以在一个分区中创建一个子分区。有效的分区的前提是理解如何提出业务用户问题和理解反映的查询负载。一旦有了这种理解,您就可以知道您将需要多少层次的分区,比如,按国家分区,在同一个国家内则按城市进行分区。

使用分区的限制如下:

  • 在查询内使用的过滤程序的值必须准确匹配分区字段内的数据。
  • 如果没有使用已分区的字段来过滤数据,则会对所有分区执行一个查询。

Hive 表和分区可进一步细分为 bucket,而后者可按一个或多个列进行排序。bucket 的一个优势是:如果表是在 bucket 字段上连接的,MapJoins 将会运行得异常迅速,而且按操作分组的性能也会得到改善。


用户定义的函数

有时,所需的查询不能使用内置函数轻易定义。通过编写用户定义函数 (UDF),您就能够轻松地插入自己的处理代码,并在 Hive 查询中调用它。UDF 必须使用编写 Hive 的 Java™来编写。请注意,UDF 也是用来在 Hive 查询中执行定制 Map/Reduce 作业的一种方式。

过程

  1. 创建和编译 UDF Java 源代码,并将其打包在 JAR 文件中。
  2. 用以下两种方式之一让 JAR 文件成为 Hive 运行时所了解的文件:
    • 将此 JAR 文件添加到 hive-site.xml 内的 Hive aux 路径,让所有 Hive 会话都可以看见它。
    • 或执行一条命令,比如 add jar/home/hdpadmin/udf/mystrip.jar。在本例中,JAR 文件只对目前会话可见,所以在 Cognos Administration 内定义 BigInsights 数据源连接时,无需将它作为一个打开会话命令输入。
  3. 当且仅当 Java 源代码没有在 hive-site.xml 中注册时,才必须将此函数定义为一个打开会话命令,比如 create temporary function mystrip as ‘ com.ibm.cognos.bigdata.udf.MyStrip'
  4. 在 Cognos Business Intelligence 的 Expression Editor 界面中调用此函数。

结束语

通过 BigInsights,现在有许多新的信息来源可在 Cognos Business Intelligence 中得到分析;由于技术限制,这些信息来源过去曾一度遭到丢弃。这使您可以充分利用 Cognos 的各个领域(比如仪表板、分发和可视化)内的优势,以及 BigInsights 强大的并行处理能力。本文中所描述的互操作性只是 IBM Cognos Business Intelligence 与 IBM InfoSphere BigInsights 集成的光明前景的第一个里程碑。


致谢

特别感谢 Amol Sonawane、Bharath Ganesh、Santosh Ghule 和 Nigel Campbell 对本文的贡献和评论。

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management
ArticleID=854103
ArticleTitle=InfoSphere BigInsights 上的 Cognos Business Intelligence 10.2 报告功能
publish-date=01052013