使用 IBM Big SQL over HBase,第 2 部分 查询处理和商业智能报告(1)简介
 
- UID
- 1066743
|

使用 IBM Big SQL over HBase,第 2 部分 查询处理和商业智能报告(1)简介
简介本系列的第 1 部分重点介绍了创建表和各种加载数据的方式。第 2 部分的目的是对以下操作进行演示:
- 查询 Big SQL HBase 表
- 一个用于运行简单报告的商业智能和报告工具,展示了 Big SQL JDBC 客户端驱动程序
本系列涵盖大量的内容,所以我们省略了一些基本信息。我们假设读者至少对 InfoSphere BigInsights、HBase 和 JAQL 有基本的了解(有关这些技术的更多信息,请参见 )。您还可以 本系列中使用的样本数据。
A 部分. 查询处理要有效地查询 HBase,则需要尽可能多地向服务器推送应用程序,包括 projection push-down,或者提取查询所需的最少的列。在扫描范围、过滤器、索引查找内容的时候,还应该将查询谓词下推到服务器。设置扫描范围功能非常强大,因为它有助于缩小需要扫描的区域。利用完整的行键,HBase 可以快速定位区域和行。利用部分键和键范围(上限或下限,或两者同时使用),HBase 可以缩小区域,或消除落在该范围之外的区域。
索引有助于利用键进行查找,但执行这样的查找时需要使用两个表。过滤器不能消除区域,但有些过滤器具有在某个区域内跳过的能力。它们有助于缩小返回到客户端的数据集。
利用有限元数据和有关 HBase 表的统计信息来支持多种提示,这有助于提高查询的效率。
数据为了证明从 Big SQL 下推的影响, 将使用本节中介绍的模式。该示例使用了一个 tpch 表:一个包含使用下面的映射定义的 150,000 个行的 orders 表。
从 Big SQL shell 发出以下命令来创建 orders 表。表中有一个多对一映射;还有一个复合键和密度列(density column)。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| CREATE HBASE TABLE ORDERS
(
O_ORDERKEY BIGINT,
O_CUSTKEY INTEGER,
O_ORDERSTATUS VARCHAR(1),
O_TOTALPRICE FLOAT,
O_ORDERDATE TIMESTAMP,
O_ORDERPRIORITY VARCHAR(15),
O_CLERK VARCHAR(15),
O_SHIPPRIORITY INTEGER,
O_COMMENT VARCHAR(79)
)
column mapping
(
key mapped by (O_CUSTKEY,O_ORDERKEY),
cf:d mapped by (O_ORDERSTATUS,O_TOTALPRICE,O_ORDERPRIORITY,
O_CLERK,O_SHIPPRIORITY,O_COMMENT),
cf d mapped by (O_ORDERDATE)
)
default encoding binary;
|
通过发出以下命令将样本数据加载到新创建的表。
1
2
| LOAD HBASE DATA INPATH 'tpch/orders.10p.tbl'
DELIMITED FIELDS TERMINATED BY '|' INTO TABLE ORDERS;
|
1
| 150000 rows affected (total:21.52s)
|
下一节将讨论来自 Big SQL 日志文件的输出,演示要检查哪些内容来确认来自 Big SQL 的下推。要查看日志消息,可能需要先使用下面的命令更改日志记录的级别。
1
2
| log com.ibm.Jacl.modules.hcat.mapred.JaclHBaseInputFormat info;
log com.ibm.Jacl.modules.hcat.hbase info;
|
在 HBase 级别上将列下推。在多对一映射中,如果查询只需要使用包含许多部分的某个密度列中的一部分,则会返回密度列的整个值。因此,将通常会一起查询的列打包在一起将会获得更高的效率。
使用以下命令 来跟踪 Big SQL 日志文件。
备注:保持会话在一个终端中一直处于打开状态,直至练习完成。您通常需要通过该会话查看在运行某些命令时的后台操作。
1
| tail -f /var/ibm/biginsights/bigsql/logs/bigsql.log
|
|
|
|
|
|
|