Hbase获得查询结果总数

在Hbase中获取查询结果的总数不同于Oracle,需要进行服务器端配置,如在hbase-site.xml中添加AggregateImplementation的coprocessor。然后在客户端通过AggregationClient的rowCount方法实现。代码示例展示了如何在Java中获取符合条件的记录总数。

在使用Hbase的时候,通常涉及到前台分页,而分页又涉及到在前台显示符合条件的总数,在ORACLE中我们可以轻易的获得总条数,但在Hbase中就得做一些配置了,上代码:

1.服务器端配置

在$HBASE_HOME/conf/hbase-site.xml添加一个配置项。具体如下

<property>

<name>hbase.coprocessor.region.classes</name>

<value>org.apache.hadoop.hbase.coprocessor.AggregateImplementation</value>
</property>

若之前未配置此项,则配置完后,需要重启hbase方能生效,客户端的hbase-site.xml最好也加入此配置,以防出现奇怪的问题。

2.客户端使用,直接上代码。

scan直接用查询结果所用的scan即可。

[java] view plain copy
  1. /**
  2. *获得符合条件结果总数
  3. *@authorwanglongyf22013-1-11上午10:29:15
  4. *@paramscan
  5. *@return
  6. */
  7. privatelonggetTotalNumber(Scanscan){
  8. AggregationClientaggregationClient=newAggregationClient(conf);
  9. longrowCount=0;
  10. try{
  11. <scan.addColumn(columnFamily,etimeQualifier);//必须有此句,或者用addFamily(),否则出错,异常包含ci****
  12. rowCount=aggregationClient.rowCount(tableName,null,scan);
  13. }catch(Throwablee){
  14. LOG.fatal("getTotalNumberwrong.");
  15. e.printStackTrace();
  16. }
  17. returnrowCount;
  18. }
  19. 更多hbase性能请参见:http://www.icartype.com
YCSB(Yahoo! Cloud Serving Benchmark)是一个广泛使用的性能测试工具,专为评估NoSQL数据库的性能而设计。它提供了一套标准化的工作负载模型,能够模拟不同的读写场景,并支持多种数据库系统,包括HBase。 ### 配置YCSB与HBase集成 在使用YCSB对HBase进行性能测试之前,需要完成以下准备工作: - **安装YCSB**:可以从[YCSB GitHub](https://github.com/brianfrankcooper/YCSB)下载源码并进行编译安装,或直接下载预编译的二进制包。 - **配置HBase客户端**:确保YCSB的HBase绑定能够访问HBase集群。需要将HBase的配置文件(如`hbase-site.xml`)复制到YCSB的配置目录中,并确保HBase的依赖库(如HBase的JAR文件)在YCSB的classpath中可用。 ### 执行性能测试 YCSB支持多种工作负载模型,包括但不限于: - **Workload A**:50%读取 + 50%更新,适用于测试在线事务处理(OLTP)场景。 - **Workload B**:95%读取 + 5%更新,适合测试读密集型的应用。 - **Workload C**:100%读取,用于评估纯读取操作的性能。 - **Workload D**:95%插入 + 5%读取,适合测试写入密集型的场景。 - **Workload E**:短范围扫描,用于测试扫描操作的性能。 - **Workload F**:读取-修改-写入混合,用于测试复杂事务操作的性能。 执行YCSB测试的基本命令如下: ```bash # 加载数据 bin/ycsb load hbase -P workloads/workloada -p table=usertable -p columnfamily=family # 运行测试 bin/ycsb run hbase -P workloads/workloada -p table=usertable -p columnfamily=family ``` ### 结果分析 YCSB会输出一系列性能指标,包括: - **吞吐量(Throughput)**:每秒处理的操作数。 - **延迟(Latency)**:操作的平均、最大和百分位延迟。 - **错误率(Error Rate)**:失败操作的比例。 这些指标可以用于评估HBase在不同负载下的表现,并帮助识别性能瓶颈。 ### 优化建议 在进行性能测试时,可以根据实际需求调整以下参数以获得更准确的结果: - **线程数(Thread Count)**:通过调整`-threads`参数来模拟不同级别的并发请求。 - **数据集大小(Record Count)**:通过`-p recordcount`设置测试数据集的大小。 - **操作总数(Operation Count)**:通过`-p operationcount`指定执行的操作总数。 此外,还可以参考HBase官方文档中的性能调优建议[^1],以优化HBase集群的性能。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值